如何跟踪对开发数据库的更改并将这些更改应用于生产数据库(SQL Server 2008)?
我在我的开发服务器上保留了数据库的本地副本,当我添加新功能时,我可能会在数据库中添加新表或更改字段和表名。什么是跟踪此类更改然后将其应用于主数据库的好方法?
有没有办法在两个数据库之间进行类似“diff”的操作并合并定义更改?
我考虑过合并复制,但我不确定处理架构更改的效果如何。例如,这里:http://technet.microsoft.com/en-us/library/ms151870.aspx它提到我基本上不能使用SSMS进行定义更改,因为它会丢弃并重新创建表,而发布的对象不允许这样做。
智能软件可以比较列数,类型,位置,并应用其他模糊匹配/逻辑推理方法来确定表已重命名或添加了新表或更改了列名,之后它可以向用户提供确认和自动申请的差异。
是否存在类似我上面描述的内容,或者我是否记得在SSMS中保存DDL语句并在生产数据库中手动运行它们?
答案 0 :(得分:1)
也许您需要一个像(例如)FluentMigrator这样的迁移工具,它可以帮助您跟踪源代码中的数据库更改。
来自Fluent Migrator原作者的Here is a tutorial,解释了Fluent Migrator的用途,为什么需要它以及它是如何工作的。
另一种选择是你已经提到的:
智能软件可以比较列数,类型, 位置,并应用其他模糊匹配/逻辑演绎方法 弄清楚是重命名了一个表还是添加了一个新表 列名已更改,之后可以显示差异 用户进行确认和自动申请。
我自己从未尝试过,但我在Stack Overflow上看到了很多关于Redgate SQL Compare的建议(显然这正是你所要求的)。