如何比较SQL Server 2008中的模式

时间:2011-04-04 13:32:57

标签: sql-server-2008 schema

有人可以指导我如何比较SQL Server 2008中的模式。

我想这样做是为了检查sql对象是否已经存在,如果它们存在,那么现有对象和新对象之间是否有任何变化。

4 个答案:

答案 0 :(得分:6)

您可以将SQL Server 2008中的模式与任何新的SQL Server与ApexSQL Diff进行比较,并且它具有免费的社区版。

它具有用户友好的用户界面,您可以轻松选择数据库(或其他数据源作为备份,源代码控制项目,脚本文件夹)进行比较,获取差异结果并从源数据库同步到目标数据库。

如果您只想比较对象以仅查看差异并创建合并脚本,则可以查看免费工具 - ApexSQL Compare

可以完成所需工作的另一个工具是dbForge Schema Compare

答案 1 :(得分:4)

获取Red Gate的SQL Compare等工具。

你需要付钱,但是通过节省时间,它会付出代价。

如果您有迫切需要,可以试用。

答案 2 :(得分:2)

如果你能避免,我不建议你这样做。

如果您只想比较两个SQL Server数据库,我建议使用低成本的替代http://cdttools.com/sql-diff-erence/。 (告诫:我写了)。

然而,就你所指的而言,我推荐一种不同的方法。您应该已经知道已经发布的产品的各种模式的不同版本。因此,基于将每个更改脚本完全升级到最新版本,构建更改脚本。这样,安装程序只需要检测单个版本号并根据它选择其sql操作。

如果您确实希望在安装程序中进行SQL比较,则可能需要查看属于SQL Server功能部件包的SMO(共享管理对象)。但是你很可能必须先安装它们才能使用它们。

然后,您可以使用它们为每个SQl对象生成脚本,并在安装程序中进行比较。但老实说我不推荐这个。

它会告诉您它们是否存在,并允许您生成“alter”或“create”脚本版本。或者,您可以直接转到INFORMATION_SCHEMA数据库系统对象,以便直接查询对象是否存在。

答案 3 :(得分:0)

在Visual Studio 2012中,转到SQL(菜单项) - >架构比较。单击左侧的Select Source,然后选择dev数据库。选择右侧的生产数据库。

然后单击生成脚本图标(更新图标旁边,它看起来或多或少像音乐图标)。这将生成更新脚本。您也可以取消不希望包含在脚本中的任何更改。它是......'免费'如果您碰巧拥有Visual Studio 2012