Wil*_*hoi 3 t-sql sql-server sql-server-2005
我和一个队友正在为我们的公司开发一个基于Web的应用程序。SQL Server 2005用于数据持久性。由于应用程序不断发展,因此任何最新的稳定更新都将部署到生产环境中。我们公司中没有单独的DBA,也没有SQL Comparator工具。
为了将生产应用程序中的数据库更新到最新版本,我的方法是将流程分为:
根据所有CREATE SCRIPTS创建一个新的数据库
通过复制和/或转换进行数据迁移
使用新实例进行测试
替代
我的主要考虑是,我们不能保证手动创建的脚本没有错误。但是,我受到同事的挑战,认为这种方法很麻烦。
所以,请告诉我什么会更好?还是最好的?
附言:我们没有购买许可证所需工具的预算。
谢谢!
威廉
首先,数据库代码与所有其他代码一样,应编写脚本并置于源代码控制中。这样一来,您就知道要在要推送的应用程序的哪个版本中推送什么代码(并且可以轻松地与之捆绑在一起)。毕竟,由于相应的应用程序代码尚未准备好,您可能还没有准备好将其推入产品。
在任何情况下都不应该使用GUI更改数据库,而只能使用源代码控制中的脚本进行更改。
拥有数据后,对表的所有更改都应使用alter table完成。如果您不能使用alter table做某事(例如在事实之后添加一个identity字段),那么您可以编写脚本来创建一个表,该表在所需的结构中具有一个slighlty differernt名称,然后从旧表中复制数据,然后删除旧表并重命名新表。当然,如果您也将索引,约束,触发器等放在表上,则还必须删除它们并重新创建它们。幸运的是,大多数更改都可以使用alter table完成。)如果需要创建一个不允许为null的新字段,则可以使用alter table用默认值编写新字段的脚本,或者使用alter table添加允许为null的字段,编写更新以使用现有数据填充该字段,然后编写另一个alter table以使该字段不为空。