65.9K
CodeProject 正在变化。 阅读更多。
Home

Visual Studio 2013 中的免费 SQL Server 架构比较工具

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.79/5 (15投票s)

2016年2月23日

CPOL

4分钟阅读

viewsIcon

28439

downloadIcon

796

查看 VS2013 中的免费 SQL Server 架构比较工具

引言

在本文中,我们将介绍 Visual Studio 中一个非常有用的功能,但它常常被忽略,坦白说,很多人甚至不知道它的存在。这个话题是关于 Visual Studio 中隐藏的瑰宝,名为“新建架构比较…”,位于“工具”菜单的“SQL Server”项下。

此工具的主要用途是当开发人员在开发、QA、Stage 和 Production 等不同环境之间处理同一数据库的多个实例时,并且数据库存在需要跟踪的频繁架构更改。

尽管有许多第三方软件和工具,如 **Redgate 的 SQL Compare** 和 **DevArt 的 Schema Compare**,但它们是付费产品,许多开发人员正在 寻找一个能够满足其基本需求的免费工具。

遵循的流程

在本文中,我们将比较同一数据库的两个实例,一个称为 `Source`(源),另一个称为 `Target`(目标)。我们将复制或模拟实时架构更改,以便有更深入的了解。我已经包含了 `Source` 和 `Target` 数据库的 SQL 脚本。

  • 源数据库的脚本可在此处下载 此处
  • 目标数据库的脚本可在此处下载 此处

下载并执行脚本以创建两个数据库后,打开 Visual Studio 创建一个比较架构定义。转到“工具”菜单,在“SQL Server”下,选择“新建架构比较…”。

我们将看到 `SqlSchemaCompare` 窗口,我们需要在这里选择 `Source` 和 `Target` 数据库……

点击第一个下拉菜单“选择源…”以选择我们的源数据库“SchemaCompareSource”。

这将打开“选择源架构”窗口。

在这里,我们有三个选项来选择源数据库:

  1. 项目(数据库项目)
  2. 数据库,以及
  3. 数据层应用程序文件(*.dacpac* 文件)

我们将从架构选项中选择“数据库”,点击“新建连接…”来连接到我们的源数据库。

点击“测试连接”,然后点击“选择源架构”窗口上的“确定”。遵循相同的流程选择目标数据库架构“SchemaCompareTarget”。将文件保存到您的磁盘。

注意: 文件扩展名 *.scmp* 表明这是一个架构比较文件。

查看操作菜单项

  • 比较(Shift+ Alt + C:此操作用于比较选定的源数据库和目标数据库架构。
  • 更新(Shift+ Alt + U:此操作可用于使用源架构更新目标架构。
  • 生成脚本(Shift+ Alt + G:用于生成可在 SSMS 中目标数据库上执行的 SQL 脚本。
  • 选项: 允许我们选择要比较的对象类型和应用过滤器。
  • 分组结果:根据 `操作`、`架构` 或 `类型` 对结果进行分组。
  • 显示相同对象:切换此选项以查看相同的对象。
  • 显示不支持更新的操作:不支持更新的对象。
  • 上一步(Shift+ Alt + ,:移动到上一个更改。
  • 下一步(Shift+ Alt + .:移动到下一个更改。

选择源和目标连接后,点击“比较”(Shift+ Alt + C)按钮开始比较两个架构。这可以显示如下:

从结果视图中,我们可以看到对象按四类分组:

  • 删除:源数据库中删除但在目标数据库中存在的对象。
  • 更改:存在于源和目标数据库中,并且正在被修改的对象。
  • 添加:添加到源数据库但不存在于目标数据库中的对象。
  • 无操作:存在于源和目标数据库中,且没有更改的对象。

要比较有关**已删除**对象的详细信息(在本例中为 `Table_1`),从图像中可以看出该表在源数据库中缺失。

要比较有关**已添加**对象的详细信息(在本例中为 `Table_2`),从图像中可以看出该表存在于源数据库中,但在目标数据库中缺失。

要比较有关**已更改**对象的详细信息(在本例中为 `Table_3`),从图像中可以看到列名发生了更改,并且在源数据库中添加了一个新的关系(约束)。

另一个查看表更改的示例。**以颜色突出显示**的更改。

另一个查看**存储过程**更改的示例。**以颜色突出显示**的更改。

查看不需要更改的对象,因为源和目标数据库中的架构相同。如果您没有看到“无操作”类别……只需切换“显示相同对象”操作并重新比较。

如果您只想比较“存储过程”类型的对象,请转到**选项**,然后在“对象类型”选项卡下,取消选中“应用程序范围”下的所有对象。

现在展开“应用程序范围”以仅选择“存储过程”,如下所示:

点击 *确定* 并再次点击**比较**。这将仅显示与存储过程相关的更改……

注意:您可以选择任何对象类型,如视图、触发器、用户定义函数和索引等。选项中有许多对象类型可供选择。

这是 Visual Studio 中处理跨不同环境的数据库架构比较的最佳工具之一。这个工具肯定会使开发者的生活更轻松。

我希望您能从本文中学到一些新东西。请**评价本文**、**收藏**,并通过下面的**评论**部分提供任何建议来帮助我改进此主题。

历史

  • 2017 年 10 月 24 日:初始版本
© . All rights reserved.