【发布时间】:2013-12-07 00:00:42
【问题描述】:
我有一个相当大/复杂的数据库,我需要在现场从版本 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/
但是,它们似乎都无法成功生成架构升级脚本,因为它们不会同时处理数据。当向表添加新键时,这会导致外键违规,因为它引用的表是新的,并且虽然已创建表的架构,但它包含的数据尚未创建。可能是这样,但这需要我使用工具的不同部分,然后将两个脚本混合在一起。
我知道这可能看起来像:
What is best tool to compare two SQL Server databases (schema and data)?
这是我找到我尝试过的大多数现有工具的地方,但到目前为止,我还没有设法让其中任何一个生成一个工作模式迁移脚本(我真的对数据不太在意,但我确实需要外键所需的数据 - 这就是我部署旧版本和新版本时的全部区别。
我是不是期望太高了? 我应该放弃并开始手动拼接我拥有的东西吗? 还是我要完成所有提交并手动创建升级脚本?
【问题讨论】:
-
你可以试试我的工具——你可以在atlantis-interactive.co.uk找到它们。他们可能不会更好地工作,但他们可能能够。当然,您可以创建不包含外键的模式同步,然后同步数据,然后包含键。
-
@MattWhitfield,哇,我以前从未见过你们的产品。但早在 2008/2009 年,当我进行研究时,周围并没有任何优质且价格合理的产品。为分享您的工作点赞!
-
谢谢马特,我认为你和卢塞罗的解决方案是同步模式减去 FK,然后是数据,然后是 FK。我只是有点惊讶,没有其他人有这个问题。没人用FK吗?还是人们只是在开发过程中编写适当的升级脚本?
-
@JamieMcNaught - 实际上,向我发送电子邮件询问的人数相当多。通常虽然是因为他们没有使用 FK,但在 DEV 中编写它们,将它们同步到生产环境,然后意识到他们的生产数据库有不一致的数据 - 所以数据同步位通常不会进入它。
-
@JamieMcNaught 每个人都应该有这些问题...使用我的工具集时,在初始数据设置和运行表迁移脚本时会自动处理(暂时禁用)FK。
标签: sql-server sql-server-2008-r2 compare