将数据库定义更改从开发副本发布到数据库的生产副本有什么好方法?

时间:2011-09-08 22:42:52

标签: sql-server-2008 merge

如何跟踪对开发数据库的更改并将这些更改应用于生产数据库(SQL Server 2008)?

我在我的开发服务器上保留了数据库的本地副本,当我添加新功能时,我可能会在数据库中添加新表或更改字段和表名。什么是跟踪此类更改然后将其应用于主数据库的好方法?

有没有办法在两个数据库之间进行类似“diff”的操作并合并定义更改?

我考虑过合并复制,但我不确定处理架构更改的效果如何。例如,这里:http://technet.microsoft.com/en-us/library/ms151870.aspx它提到我基本上不能使用SSMS进行定义更改,因为它会丢弃并重新创建表,而发布的对象不允许这样做。

智能软件可以比较列数,类型,位置,并应用其他模糊匹配/逻辑推理方法来确定表已重命名或添加了新表或更改了列名,之后它可以向用户提供确认和自动申请的差异。

是否存在类似我上面描述的内容,或者我是否记得在SSMS中保存DDL语句并在生产数据库中手动运行它们?

1 个答案:

答案 0 :(得分:1)

也许您需要一个像(例如)FluentMigrator这样的迁移工具,它可以帮助您跟踪源代码中的数据库更改。

来自Fluent Migrator原作者的

Here is a tutorial,解释了Fluent Migrator的用途,为什么需要它以及它是如何工作的。

另一种选择是你已经提到的:

  

智能软件可以比较列数,类型,   位置,并应用其他模糊匹配/逻辑演绎方法   弄清楚是重命名了一个表还是添加了一个新表   列名已更改,之后可以显示差异   用户进行确认和自动申请。

我自己从未尝试过,但我在Stack Overflow上看到了很多关于Redgate SQL Compare的建议(显然这正是你所要求的)。