有没有开源的SQL Server数据库比较工具?

42

我正在参与一个使用SQL Server 2005作为数据存储的开源项目。我们需要一种数据库比较工具,以生成差异脚本,从而能够将数据库从一个版本升级到另一个版本。

是否有一种开源或免费的SQL Server数据库比较工具,可以生成转换脚本?

12个回答

17

我认为Open DBiff做得很好。

它简单易用,可以与SQL Server 2005/2008配合使用。

但是它只生成变更脚本,没有多余的东西也没有少了什么。


似乎也适用于2012,但它可能会忽略新功能和选项,这些功能和选项有可能被脚本化。 - adolf garlic

12

1
这似乎在Win7 64位上无法工作。 - Marc
它在我的Win7 64位系统上无法运行,但我设法从源代码构建它(从二进制分发中添加了一些缺失的dll和从SubSonic的副本中的System.Data.SQLite.DLL)。这只花了我大约5分钟的时间。试试吧 - 它似乎能产生很好的结果(生成同步脚本)。我还没有测试过脚本,但这个工具看起来非常有前途。 - Muxa
这个现在支持64位了。我刚试过,是个非常好的工具。虽然不如AdeptSQL Diff好用,但它是免费的! - Chris Haines

6

我建议花一些钱购买Red Gate's SQL Compare工具,它的性能非常出色,甚至可以将数据库与Visual Studio数据库项目进行比较以生成升级脚本。它使用起来快速而简单,效果也很好。升级脚本的质量也不错。

价格并不贵,可能比你的时间还便宜。想想你的小时费率是多少,需要花多少时间去调查一个开源工具并让它正常工作(以及你已经花了多少时间),然后将它们相乘。这就是“免费”工具实际上花费你的成本,通常比商业工具高得多。


9
这个论点可以用来为购买任何东西辩护,从Aeron椅子到40英寸的屏幕再到站在你身后给你按摩的人。对于一个还没有销售额但需要购买更多物品的小企业来说,花$400购买SQL Compare就是浪费资金。相比之下,Typemock Isolator适用于在家工作的单独开发人员,价格为$90;Beyond Compare价格为$30,visualSVN whinc价格为$50,你明白我的意思了(所有数字均四舍五入)。他们应该制作一个“个人”版本。 - Avi
1
他明确表示他想要一个开源工具或免费工具,并没有完全说明原因。也许即使是小额采购在他的组织中也需要数月时间。也许他是为了慈善事业而免费提供服务。因为这与回答他的问题相距甚远,所以我给你点了踩。 - Sqeaky

5

刚刚尝试了一下...它不会生成差异脚本,所以并没有太大用处。 - Chris Haines
页面上关于他们2007年工具的注册也出现了问题... - Oskar Austegard

4

AdeptSQL Diff和DataDiff都是非常棒的产品,比RedGate的便宜得多,并且拥有更加简化的用户界面。我还没有遇到过它无法处理的情况。


同意,非常好的工具。 - Chris Haines

3

你可能想尝试使用SqlDbDiff。它可以生成更改脚本。免费版已经足够好用了。


免费版本仅支持SQL2000。 - Lee
@lee 你确定吗?我在 SQL 2005 上使用过它。不过对于 SQL 2008 我不确定。 - edosoft
免费版本无法连接到SQL2008的默认SQLEXPRESS实例。共享版提供免费试用期,并表示支持2005和2008版本。我已经转而使用Open DBiff。它不太花哨,但确实是真正免费的。 - Lee
共享软件试用版不错... 免费软件版本在我看来不如OpenDbDiff好。 - Chris Haines

1

虽然不完全符合您的要求,但我找到了与postgresql相关的内容:

http://mbk.projects.postgresql.org/

它不会生成要应用的差异,而是允许您将新版本表的完整转储与先前版本合并。


1

有人试过xSQL Bundle(xSQL Data Compare和xSQL Object Compare)吗?我们只用于数据库差异,没有同步,所以不能说同步如何,但差异和报告还不错。

此外,OpenDBDiff有一个分支,不确定哪个更好-http://code.google.com/p/sql-dbdiff/

有人知道这里提到的任何免费/开源DB diff工具是否提供可脚本化/命令行界面来自动化差异和同步吗?

我研究了xSQL工具,它们提供命令行访问,但不幸的是,没有可脚本化的命令将差异结果导出到(报告)文件中。


0

我们拥有SQL Delta和SQL Compare两种工具。每个工具都有其优点,但也存在一些缺点,使它们变得相当麻烦。

在比较中,SQL Delta会忽略一些触发器,并执行未在操作列表中找到的操作,有时还会执行您不想要的操作。这是以相当大的时间成本为代价发现的。

SQL Compare将捕获触发器,但它们嵌入在表格列表中。对于大型数据库来说,这意味着需要逐个查看每个表格并筛选出它们。这是该工具应该为我们隔离的内容。同样,这也是以相当大的时间成本为代价的。


0

嗯,我不知道有没有这样的工具。你可以将定义作为SQL检索,然后在它们上运行差异工具,但这有点麻烦。

可能最好的解决方案是使用某种"迁移"工具,这样你就可以将数据库定义与你的代码、版本等放在一起。


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