介绍
在本文中,我们将学习如何使用 Visual Studio 中提供的 SQL Server 数据库项目(模板)比较两个数据库。我将涵盖以下几点:
- SQL Server 数据库项目介绍。
- 连接两个数据库:源和目标。
- 比较和识别两个数据库之间的差异。
- 更新或生成脚本以更新目标数据库。
在上一篇文章中,我们学习了如何创建和发布 SQL Server 数据库项目。
- 创建新的 SQL Server 数据库项目。
- 从现有数据库、SQL 脚本文件或数据层应用程序 (.bacpac) 项目导入数据库架构。
- 发布以在 SQL Server 中创建新数据库。
请查找文章:如何使用 Visual Studio 创建 SQL Server 数据库项目 (c-sharpcorner.com)
数据库在任何应用程序中都扮演着最重要的角色,当表、视图、存储过程的数量增加时,项目管理变得困难。
考虑以下场景:多个开发人员正在为下一个版本开发一个项目,一些开发人员正在处理错误或添加新功能,这又需要对数据库进行一些或许多更改。大多数时候,开发人员会手动记录 DB(数据库)更改。有时他们会错过一些更改,这会导致生产成本。
Dev、UAT 和生产 DB 不同的情况很多,这又是识别差异的麻烦。
市场上有许多工具可用于比较数据库,但都是昂贵或付费的解决方案。
因此,在本文中,我们将讨论和了解免费的 Visual Studio 中提供的 SQL Server 数据库项目。是的——免费!!
先决条件
Visual Studio(2013、2015、2017 或 2019)和 MS SQL Server。我使用 VS2019 和 SQL Server 2017 Developer 进行说明。
您可以创建新的数据库项目并从现有数据库、.sql 脚本文件或数据层应用程序 (.bacpac) 导入数据库架构。然后,您可以调用可用于连接数据库开发的相同可视化设计器工具(Transact-SQL 编辑器、表设计器)来更改脱机数据库项目并将更改发布回生产数据库。更改也可以保存为脚本以供稍后发布。使用“项目属性”窗格,您可以将目标平台更改为不同版本的 SQL Server(包括 SQL Azure)。(复制 MS 文档)
比较两个数据库并找出差异
在本节中,我们将介绍如何比较两个数据库以识别 Dev、UAT 或 UAT、Prod 等差异。
首先,使用 Visual Studio 打开 SQL Server 数据库项目,右键单击它,然后选择如图所示的比较架构。
然后,我们将选择源数据库和目标数据库并提供与它们的连接。
我们可以证明与源或目标中的本地数据库、网络数据库或 Azure 数据库的连接。换句话说,我们可以比较不同来源的两个数据库,即开发到生产、开发到 UAT、开发到生产,或者任何两个 SQL 服务器数据库。另一个重要的点,我们也可以将任何目标数据库与项目包含的数据库进行比较。
然后接下来,我们将点击比较,如图所示:
通常,根据网络速度或数据库规格需要一些时间。之后,我们将看到比较的结果,如下所示。
您会注意到三种不同类型的更改:删除、编辑和添加。
删除
删除对象是在源数据库中删除的对象,更新也会从目标数据库中删除。对象:表、视图、存储过程同样如此。
编辑
编辑对象是一个对象列表,其中源中有一些更改,更新将根据源修改对象。
添加
添加对象是新添加到源数据库中的。
但是,比较列表中的每个对象都有一个复选框,如果我们想跳过目标数据库中的更新,我们可以取消选中其中的任何一个。
更新或创建更新脚本
比较成功后,我们会得到更多的选择。除了比较图标之外,还有更多选项可以更新或生成更新脚本,如下所示:
直接更新选项
此选项将使用模式比较期间提供的连接字符串直接更新目标或目标数据库。因此,我们需要确保为连接凭据分配了适当的权限。
生成脚本
同样,此选项将提供用于将更改应用于目标或目标数据库的 SQL 脚本。
从上述考虑,我们不需要在数据库之间手动跟踪数据库更改或创建迁移脚本,这是一项耗时且容易出错的任务。我们可以利用 Visual Studio 中提供的免费工具。
结论
在这篇文章中,我们学习了如何比较两个数据库并识别在 Visual Studio 中使用 SQL server 数据库项目的差异,这是完全免费且方便的工具。此外,我们已经生成了一个更新脚本,可以根据节制直接在目的地进行更新。此外,我们可以根据上述文章中的要求修改更新。