我认为我从来没有一次是只在给定数据库的一份拷贝上工作,尤其是在面向公众的项目中。至少总会有两份拷贝:公开版和无论在哪个迭代阶段被我私下用来开发和测试的版本。手工保证两个数据库对象的同步是常有的事,如果这么做是因为我已经习惯忍受的话就好了。要改掉旧习惯真的非常难。
偶然间我遇到了一个工具,它可以帮助我使这部分工作变得不太乏味。它叫“OpenDBDiff”,是一款针对SQL Server的免费的开源数据库对象同步工具,发布在微软的CodePlex网站上。它遵从GPL2授权,也就是说你可以随便在内部使用,但是对它做任何修改并重新发布版本必须公布出来。这个程序不需要正式安装(是绿色的),你可以把二……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
我认为我从来没有一次是只在给定数据库的一份拷贝上工作,尤其是在面向公众的项目中。至少总会有两份拷贝:公开版和无论在哪个迭代阶段被我私下用来开发和测试的版本。手工保证两个数据库对象的同步是常有的事,如果这么做是因为我已经习惯忍受的话就好了。要改掉旧习惯真的非常难。
偶然间我遇到了一个工具,它可以帮助我使这部分工作变得不太乏味。它叫“OpenDBDiff”,是一款针对SQL Server的免费的开源数据库对象同步工具,发布在微软的CodePlex网站上。它遵从GPL2授权,也就是说你可以随便在内部使用,但是对它做任何修改并重新发布版本必须公布出来。这个程序不需要正式安装(是绿色的),你可以把二进制文件和支持文件解压到任意文件夹,然后直接运行。
OpenDBDiff通过比较两个数据库的对象进行工作,它会标记出来差异并生成同步脚本。这两个数据库并不是必须宿主在同一个SQL Server实例或者甚至在同一台计算机上;如果你可以跨网络连接到数据库,那么你可以向它同步或者从它同步出来。每次交互场景可以被保存为一个项目文件并按对象类型过滤,可以按是否启用大小写敏感进行比较,也可以限制许多其他参数。然后,生成的变更脚本可以被拷贝出来并根据你的意愿运行,所以该程序不可能会出现意外破坏数据库对象的情况。
要注意的是,该程序的文档非常不足,甚至可以说几乎没有。在我经历过一些尝试,出过一些错误以后,才意识到源服务器主机字段和目标服务器主机字段需要填写的格式是“服务器主机名实例名”。也就是说,如果你有一台计算机的主机名是“MYSERVER”,SQL Server实例名是“SQLEXPRESS”,你可以用“MYSERVERSQLEXPRESS”来连接它。在我看来,更智能一点的用户界面设计应该把主机名和实例名分成两个独立的输入框输入。
该项目还有另外一个版本,被称为“sql-dbdiff”。它是GPL3授权的,提供了一些额外的功能。其中之一就是称之为Visual Diff的功能,可以展示旧的创建脚本和给定对象的新版本之间的变化。该程序的这个版本也被开发的很快,所以它可能是两个版本中更好的选择(虽然它不是原始版本)。
作者
Serdar Yegulalp从1994年到2001年为Windows杂志写作,覆盖了广泛的技术方面。他现在是《The Windows 2000 Power Users Newsletter》一书的出版者,辛勤钻研他擅长的Windows NT, Windows 2000 and Windows XP领域,并为TechTarget写专栏。
翻译
相关推荐
-
数据库对象脚本编程基础知识
尽管SQL Server客户端工具在创建数据库对象脚本方面有着不错的功能,但它们的灵活性也许并没有达到人们所期望的程度。本文将介绍一些数据库对象脚本编程的技巧。
-
最新SQL Server工具解决数据库文档难题
数据库开发者总是避免以文档形式记录自己的代码和结构,而当有其他人要接手他们的项目时,才会感到问题的严重性。
-
Oracle数据库中四大应用服务之间的密切关系
本文主要是对Oracle数据库中service_name、tablespace、schema、user四者之间的关系一些分析与实际应用中的举例。
-
在SQL Server中实现Oracle的Sequence
如果大家在Oracle里面用惯了Sequence,要在SQL Server里实现Sequence,就会发现没有现成的Sequence对象可以Create了,本文将对这一问题进行深入探讨。