数据库模式严重不同步 - 需要更新并确保数据不丢失。

4
问题:我们有一个应用程序,其中一部分只被少数用户使用,并且该应用程序的那部分还运行在单独的数据库上。在理想情况下,这两个数据库的模式应该同步,但事实并非如此。较小的数据库已经运行了一些迁移,大部分没有;而且,也没有像修订号这样的东西可以轻松地识别哪些已经迁移,哪些没有。我们希望为将来的项目解决这个难题。在讨论中,我们提出了以下可能的行动计划,并想知道是否有任何已经解决了这个问题的项目:
我们想要做的是从完全迁移的大型数据库的模式创建一个空数据库,然后将所有非迁移的小型数据库的数据移动到那个空数据库中。如果这样做会更容易,那么可以假设针对这个问题没有迁移删除任何内容,仅添加。
如果还有其他已知的解决方案,我也想听听。
3个回答

8
您可以使用诸如Red-Gate的SQL Compare之类的模式比较工具。您可以同步更改而不会丢失任何数据。我在这里写了许多价格各异的替代工具:

http://bertrandaaron.wordpress.com/2012/04/20/re-blog-the-cost-of-reinventing-the-wheel/

很好的一点是大多数工具都有试用版本。因此,您可以尝试使用它们14天(完全功能),只有在符合您的期望时才购买。我不能代表其他工具说话,但我已经使用RG多年了,它是一个非常有能力和可靠的工具。 (已更新2012-06-23以帮助防止链接失效。)

1
  1. 很棒的文章,我也把它发送给了我的团队。
  2. 这是一个那种项目,在没有非常有说服力的情况下,几乎没有软件购买预算。然而,链接的Open DBDiff看起来会是我需要做的事情的一种绝佳工具。非常感谢!
- Zind

3

Red-Gate's SQL Compare,正如Aaron Bertrand在他的答案中提到的那样是一个非常好的选择。然而,如果你没有购买许可证的权限,可以尝试以下方法:

1)对于每个数据库,脚本输出所有表、约束、索引、视图、存储过程等。

2)运行DIFF,并检查所有差异,确保小型数据库可以接受它们。如果不能,则实现任何必要的更改(包括数据)到小型数据库,以便它可以接受更改。

3)从大型数据库的模式创建一个新的空数据库

4)将小型数据库的数据导入新的数据库中。


2
你还可以将数据库反向工程为Visual Studio的数据库项目。Visual Studio Team Suite Database Edition GDR R2(我知道名字很长)具有进行模式比较和数据比较的能力,但这种方法的美妙之处在于你可以将所有的数据库放入一个漂亮的数据库项目中,从而可以管理变化并与源代码控制集成。这将允许你从共同的源代码构建并部署一致的更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接