在软件开发过程中,数据库结构的设计与创建是开发者们不可或缺的工作。随着应用程序的不断增长和变化,数据库结构的添加和修改成为了开发过程中持续进行的一部分。开发者们通常使用Microsoft的SQL Enterprise Manager来创建所需的数据库对象,如表、存储过程和视图。Enterprise Manager提供了一种强大而快速的方式来创建数据库对象,因为它自动化了工作的细枝末节,让开发者能够专注于应用程序的功能。然而,它也隐藏了创建新对象所需的SQL命令,这可能会在开发团队需要在开发、测试、预发布和生产数据库之间迁移结构时造成问题。
少数开发者使用SQL编辑器手动编码每个数据库对象的更改,可以使用生成的脚本进行未来的数据库迁移——如果(这是一个很大的如果)在这些共享的公共脚本中他们以正确的顺序保存了每一次更改。使用此过程时,即使遗漏了一条语句也可能导致混乱。
认为使用自动化迁移工具来迁移数据库结构是最好的方法。对于SQL Server数据库,Red Gate Software的SQL Compare是领先的此类工具。
SQL Compare自动化数据库结构迁移;它运行比较,显示差异,并生成脚本,可以从SQL Compare运行,以同步选定的数据库。
下面的截图和解释将为您提供该工具的简要介绍。一些图像已为此解释而裁剪。了解它对您的工作效果如何的最好方法是从Red Gate网站下载一个免费的、完全功能的试用版。
首先需要指定您想要比较的两个数据库。SQL Compare可以使用Windows或SQL Server身份验证,如果需要,还可以比较存储在不同位置的数据库。
在这个例子中,将比较两个本地数据库——WidgetStaging与WidgetProduction。要运行比较,按“比较”按钮。
一旦SQL Compare比较了两个数据库,结果将显示出来。屏幕的上半部分(如图2所示)为您提供了差异的概览。黑色"="符号表示没有差异;双头蓝红箭头表示两个数据库中的对象不同,蓝色箭头表示缺少的对象。如果有红色箭头,它将表示额外的对象。
屏幕的下半部分(图3,如下)显示了创建SQL,并指出了数据库中的具体差异。同样,有箭头显示缺少或不同的内容,SQL为便于理解进行了颜色编码。如果您不想查看特定对象属性,点击"-"将折叠它。
在图3中,您可能注意到有两个标签没有向您展示。"Sync SQL 1"和"Sync SQL 2"标签包含了同步这个单个对象WidgetPrices的代码。在大多数情况下,您不会想要这样做,因为逐个同步对象需要很多工作。一次性同步所有不同的对象会更容易,将在接下来查看。但是,在某些情况下,您可能只想同步单个对象,因此这个选项对您来说是可用的。
现在SQL Compare已经确定了两个选定数据库之间的差异,可以生成同步脚本,使两个数据库相同。
点击“同步”按钮将启动“同步向导”。首先需要做的是选择想要进行更改的方向。在这个例子中,希望对WidgetProduction进行更改,使其与WidgetStaging相同。
默认情况下,SQL Compare会查看数据库对象的依赖关系。如果您希望SQL Compare忽略依赖关系,可以在向导屏幕左下角取消选中该框。
一旦您选择了同步的方向,SQL Compare将生成同步脚本。“SQL脚本”标签显示了生成的脚本。
如果您需要记录数据库的更改,您也可以选择保存脚本以备日后使用。
点击这个向导屏幕的“摘要”标签会告诉您脚本将要做的确切事情。
“警告”标签会指出在运行脚本之前您需要了解的任何潜在问题。在这个例子中,它警告表WidgetReferences需要重建,这将使同步运行稍微慢一些。如果识别出的问题可能导致同步失败,SQL Compare将提出解决方案。
现在SQL Compare已经生成了同步脚本,您需要决定是否希望在SQL Compare内同步数据库,还是从SQL查询分析器内运行同步。
如果您决定同步数据库,如在这里所做的,您可以选择在同步后是否希望重新比较数据库。在这种情况下,将重新运行比较以确保成功。
由于要求SQL Compare在同步后重新比较数据库,SQL Compare会自动重新运行比较并显示结果。现在可以确定同步是成功的,因为两个数据库中的所有对象都相同,如"="符号所示。
管理开发、测试和生产数据库之间的数据库结构迁移过程最好使用SQL Compare。如果您是使用SQL Server数据库的开发者,那么SQL Compare将为您节省大量时间。
如果您需要比较和同步SQL Server数据库中的数据,SQL Compare的配套产品SQL Data Compare也将为您完成这项耗时的任务。
SQL Compare被描述为“任何严肃软件商店工具箱中的重要部分”,并且因其是SQL Server最节省时间的工具而获奖。许多积极的评论和推荐信已经为SQL Compare及其配套产品撰写。