人们如何建议管理数据库结构更新?
e.g。添加了新功能,需要更改现有表,添加新表等。
是否有一个好的软件或是写ALTER
类型语句的情况。
答案 0 :(得分:4)
虽然有软件可以分析两个模式(RedGate SQL Compare)之间的差异并生成必要的更改脚本,但我更喜欢编写自己的数据库更改语句。这样,我就可以完全控制正在改变的内容 - 仅此而已。将更改转换为每个数据库版本的Install.sql脚本或类似内容,以便您可以运行该脚本并更新数据库。
这样可以轻松地将更改从开发移动到测试再到生产。
答案 1 :(得分:1)
如果您不想手写所有alter语句,SQL Server Management Studio有一个GUI来处理所有这类内容。您可以使用GUI,然后查看它生成的脚本,如果您想要某种快速,混合的方法,可以从那里开始。
答案 2 :(得分:1)
我要添加一件事。编写alter table语句来更改表结构是不够的。如果要更改表结构,最好在运行它之前确定其确切知道其他视图,函数,表,存储过程,触发器,SSIS(DTS)包(对于SQL Server)和来自应用程序的动态代码将受到变化的影响。如果您不完全确定可能会影响其他对象,则表示您尚未准备好更改该表。我已经看到过多的业务关键功能被破坏了,因为有人在不考虑使用该结构的情况下偶然改变了表结构。如果您正在考虑进行数据库结构更改,我建议您在执行此操作之前先阅读数据库重构。
这是一本很好的书: http://www.amazon.com/Refactoring-Databases-Evolutionary-Addison-Wesley-Signature/dp/0321293533
答案 3 :(得分:0)
您没有提及您的申请范围或开发人员的数量等,因此提出任何建议都有点困难。但是,如果您的开发包含多个并发项目和多个开发人员,并且您正在从开发复制到生产,我会建议以下内容:
注意:qa与生产几乎完全相同,除了应用等待最终生产安装的更改。 dev包含任何正在进行的工作更改,额外的调试垃圾等。您可以定期将生产备份恢复到qa和dev以重新同步它们(只需确保所有开发人员都知道这一点并相应地计划),因为(取决于数量)开发人员)他们(生产与qa与开发)将开始产生更多的差异。