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






4.79/5 (15投票s)
查看 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
”。
这将打开“选择源架构”窗口。
在这里,我们有三个选项来选择源数据库:
- 项目(数据库项目)
- 数据库,以及
- 数据层应用程序文件(*.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 日:初始版本