比较SQL Server DB架构和数据(同时)并生成脚本



我有一个相当大/复杂的数据库,需要在字段中从版本1升级到版本2。在模式上有很多变化,更重要的是两者之间的数据。

是的,我知道这应该是版本控制alla:
http://www.codinghorror.com/blog/2008/02/get-your-database-under-version-control.html但事实并非如此——等我完成任务时才会如此。

所以,目前的问题是,我面临的选择是要么完成所有提交,要么尝试在数据库的两个版本之间进行区分。到目前为止,我已经尝试过:
http://opendbiff.codeplex.com/
http://www.sqldelta.com/
http://www.red-gate.com/

然而,它们似乎都无法成功生成模式升级脚本,因为它们不同时处理数据。当向表添加新键时,这会导致外键冲突,因为它引用的表是新的,而当表的架构已经创建时,它所包含的数据还没有创建。可以,但这需要我使用工具的不同部分,然后将两个脚本混合在一起。

我知道这看起来可能与以下内容重复:
比较两个SQL Server数据库(架构和数据)的最佳工具是什么?这就是我找到我尝试过的大多数现有工具的地方,但到目前为止,我还没有设法获得任何这些工具来生成一个工作模式迁移脚本(我真的不太在意数据,但我确实需要外键所需的数据——这是我部署旧版本和新版本时的全部区别)。

我是不是期待太多了?我应该放弃并开始手动缝合我现有的东西吗?还是我要完成所有提交并手动创建升级脚本?

我想不出比您尝试过的工具更强大的工具了。如果这些都失败了,我自己开发的版本控制系统可能也不会对你有多大帮助。

但是,您应该能够生成一个更新脚本,然后手动编辑它,将数据转换添加到其中

和/或您可以在更新脚本运行期间禁用外键约束。

没有"同时"处理模式和数据这回事。即使将它们放在一个大脚本中,您仍然需要先做模式,然后再做数据。如果模式脚本创建了一个新表并向其添加了约束,那么就没有理由出现引用完整性冲突错误,因为这些表中没有行。

无论如何,您应该尝试一下我们的xSQL架构比较和数据比较工具,您会对您获得的性能和控制级别印象深刻。

最新更新