比较器的比较,用于同步MS SQL Server的架构和数据库数据

描述变更同步的总体需求


使用数据库时,通常必须解决同步更改的问题。
如果公司仅使用一种工业环境,则除此以外,还需要至少一种其他环境来测试所做的更改。 在这种情况下,有必要将更改从测试环境转移到工业环境。

随着公司的发展,必要的服务器和虚拟环境的数量会增加,数据库管理系统的实例数量也会增加,因此需要更复杂的同步。

通常,数据库是在专用环境中开发的。 然后将更改转移到测试环境中以进行各种测试(单元测试,自动测试,负载测试等)。 并且只有在开发和检查的所有阶段之后,才将更改转移到工业环境中。

使用足够大的基础结构,有必要立即将更改传输到多个工业环境。 另外,可以按功能将数据库开发划分为不同的环境,然后有必要在这些环境之间定期转移更改。

在某些情况下,更改是在开发环境之外应用的,需要将其转移到开发环境中。 但是必须将这种情况降到最低,以免对系统的正确运行造成威胁。


通常,更改的传递顺序可以表示如下:
  1. 在开发环境之间。
  2. 从开发环境到测试环境。
  3. 在测试环境之间。 如果您对开发环境所做的更改不是来自开发环境,则这些更改也将转移到开发环境中。 通常,所有更改都应从开发环境到测试环境,而不是相反。
  4. 从测试环境到工业化前环境,在其中为每个特定的工业环境收集更改,将执行最新的集成测试,以及在发生预先指定的阶段性故障时回滚更改的测试。
  5. 从前工业环境到工业环境,具有快速回滚所做更改的能力。

有多种工具可用于在环境之间同步更改,例如:
  1. Visual Studio比较器
  2. SQL Server集成服务
  3. dbForge比较器by Devart
  4. Quest软件ApexSQL
  5. RedGate解决方案

通常,用.NET编写的解决方案(例如,用C#编写)可与MS SQL Server一起使用。

本文将讨论一个使用Devart,Quest Software和RedGate中的工具将更改从一台服务器转移到另一台服务器的MS SQL Server数据库的示例。 最后,将对这些工具进行比较。

在本文中,作为示例,我们将考虑SRV数据库,该数据库旨在为MS SQL Server DBMS服务。 您可以在此处下载其资源。
该SRV数据库可自由分发用于任何目的。

Devart解决方案


Devart的 MS SQL Server数据库同步解决方案称为SQL Server的DbForge数据 比较器DbForge架构 比较器dbForge比较包 。 前两个已集成到MS SQL Server的DbForge Studio中 ,第三个直接集成到SSMS中
详细的Devart解决方案评论

数据库架构同步


打开工作室后,转到“数据库同步”选项卡,然后单击“新建连接”按钮来创建新连接:


在打开的连接设置窗口中,必须输入必要的数据才能连接到MS SQL Server实例(源服务器)。 请注意,除了MS SQL Server,Windows,Active Directory身份验证之外,还通过MFA进行了身份验证。 填写所有必填字段后,单击“测试连接”按钮以测试连接:


建立连接后,将出现以下对话框:


接下来,单击对话框中的“确定”按钮,然后单击连接设置窗口中的相同按钮。

现在出现了一个新的连接:


同样,您需要连接MS SQL Server的所有必需实例(在此示例中,您需要为目标服务器创建连接)。

之后,单击“新架构比较”以配置比较源服务器上的数据库架构和目标服务器上的数据库的过程:


将会出现一个用于比较电路的设置窗口。

在“源”面板左侧的“源和目标”选项卡上,必须选择:
  1. 类型
  2. 连接
  3. 源数据库

在“目标”面板的右侧,您需要选择:
  1. 类型
  2. 连接
  3. 接收者数据库

请注意,在类型中,您不仅可以选择数据库,还可以选择脚本目录,快照,版本控制和备份。 在我们的例子中,我们选择“数据库”类型。

选择所有设置后,必须单击“下一步”按钮以继续设置数据库架构的同步。

如果比较了两个最初相同的数据库,则可以通过单击“比较”按钮立即开始比较架构。

如有必要,您可以通过单击左侧窗口中的相应项目转到任何设置选项卡。

在任何阶段,您都可以通过单击窗口左下方的“保存命令行”按钮将设置另存为bat文件。

在大多数情况下,在最初相同的数据库之间滚动更改时,只需单击“比较”按钮。 但是要研究该功能,必须单击“下一步”:


在“选项”选项卡中,您可以设置各种设置或将其保留为默认设置:


在“架构映射”选项卡中,可以按名称配置方案的映射:


在“表映射”选项卡中,您可以配置表和列的映射:


在“对象过滤器”选项卡中,可以指定要比较的对象。

之后,如有必要,您可以返回之前的步骤。

最后,您必须单击“比较”按钮以开始比较指定数据库的方案的过程:


数据库模式比较设置窗口将消失,并且将出现一个窗口,其中包含比较过程的指示符:


在过程结束时,请注意窗口。 您可以通过单击窗口左上角的“编辑比较”按钮来更改比较设置。 该按钮右侧是带有箭头的圆圈-这是更新按钮,它将再次开始比较方案的过程。 所有先前注册的服务器也位于下面:


通过“文件”中的主菜单,您可以将用于比较方案的设置保存为带有scomp扩展名的文件。

现在,让我们注意窗口的中央部分。 在这里,您需要选择必要的对象以与复选标记同步。 左侧是源对象,右侧是接收器。 下面以相同的方式定义对象的代码。 用于比较的对象分为4个部分,每个部分中都有这些对象的数量计数。
在此,选择一个表以查看定义代码,该表在源代码和接收器中都存在。 因此,此对象位于“不同”部分中:


选择此对象时,在为接收器同步数据库方案时,其左侧的定义代码将移至右侧。
在这里,要查看定义代码,选择仅在源中的视图。 因此,此对象位于“仅在源代码中”部分,并且右侧没有定义代码:


选择此类对象时,将为接收者生成其创建代码。
在此,为了查看定义代码,选择仅在接收器中的视图。 因此,此对象位于“仅目标中”部分,并且左侧没有定义代码:


选择此类对象时,将为接收者生成其删除代码。
接下来,要开始同步数据库模式的过程,请单击图片中以红色突出显示的按钮之一:


在“输出”选项卡中,您必须指定同步过程的发生方式。 通常,脚本生成是在工作室或文件中选择的。 在我们的情况下,我们将选择第一个选项。 建议您仔细遵循所有选项卡的顺序来设置同步过程:


在“选项”选项卡中,可以设置用于同步数据库架构的各种设置。
通常,将删除数据库备份组中的所有设置。
默认情况下,在“交易”设置组中,设置了“使用单个交易”和“将交易隔离级别设置为SERIALIZABLE”,这可以防止仅应用部分更改的情况-即 更改将全部应用或完全不应用:


摘要选项卡显示选择同步设置的结果。 如有必要,您可以返回前面的段落。
请注意,通过单击窗口左下角的“保存命令行”按钮,也可以将用于同步数据库模式的设置保存到bat文件中。
最后,您需要单击“同步”按钮以开始生成用于同步数据库模式的脚本的过程:


完成后,将在新窗口中生成脚本:



该脚本是用于将数据库架构更改从源转移到接收者的代码。 它可以在目标服务器上使用,也可以保存到文件中,以备以后在目标服务器上使用。 通常,无论如何都要保存此脚本,以便在所有检查之后将其应用于同一数据库的多台服务器上。 您可以通过将结果脚本立即发送到整个所需的服务器组来使用SSMS中已注册的服务器组来执行此操作:


同步后,先前选择的对象应从电路比较窗口中消失:


数据库数据同步


假定已经按照上面“数据库架构同步”中的描述创建了必要的连接。

之后,您需要单击“新数据比较”以配置比较源服务器上的数据库数据和目标服务器上的数据库的过程:


将会出现一个用于比较数据的设置窗口。

在“源”面板左侧的“源和目标”选项卡上,必须选择:
  1. 类型
  2. 连接
  3. 源数据库

在“目标”面板的右侧,您需要选择:
  1. 类型
  2. 连接
  3. 接收者数据库

请注意,在类型中,您不仅可以选择数据库,还可以选择脚本目录和备份。 在我们的例子中,我们选择“数据库”类型。

选择所有设置后,单击“下一步”继续设置数据库数据同步。

与电路比较不同,在比较数据时,建议您按顺序执行所有配置步骤。

如有必要,您可以通过单击左侧相应的窗口元素转到任何设置选项卡。

在任何阶段,您都可以通过单击窗口左下方的“保存命令行”按钮将设置另存为bat文件。

设置“源和目标”选项卡后,单击“下一步”:


在“选项”选项卡中,您可以设置各种设置或将其保留为默认设置:


“映射”选项卡提供了用于数据同步的表的列表。 感叹号指示没有主键的那些表。 对于此类表,必须手动进行匹配。 为此,选择所需的行(表),然后右键单击省略号:


出现匹配的窗口:


之后,如有必要,您可以返回之前的步骤。
最后,单击“比较”以开始比较指定数据库的数据的过程:


用于比较数据库数据的设置窗口将消失,并且将出现一个窗口,其中指示比较进度:


在过程结束时,请注意窗口。 您可以通过单击窗口左上角的“编辑比较”来更改比较设置。 该按钮右侧是带有箭头的圆圈-这是一个更新按钮,可再次启动数据比较过程。 所有先前注册的服务器也位于下面:


通过文件中的主菜单,您可以将用于比较电路的设置保存为带有dcomp扩展名的文件。

现在,让我们注意窗口的中央部分。 在这里,您需要选择必要的对象以与复选标记同步。 左边是源对象,右边是接收者:


下面显示以下信息:
  1. 对于插入的行-插入的行的数据:

  2. 对于可变字符串-字符串比较:

  3. 对于已删除的行-已删除的行的数据:


如有必要,您可以在左下方选择不是要更改的所有行,而是需要的行。 默认情况下,所有行均处于选中状态:


您还可以使用数据表本身上方的标签在添加,更改和删除的行之间切换:


要控制所需列(字段)的可见性,有必要的功能:


默认情况下,所有列均处于选中状态。

接下来,要启动数据库数据同步过程本身,请单击图片中以红色突出显示的按钮之一:


在“输出”选项卡中,您必须指定同步过程的发生方式。 通常,脚本生成是在工作室或文件中选择的。 在我们的情况下,我们将选择第一个选项。 建议您仔细遵循所有选项卡的顺序来设置同步过程:


在“选项”选项卡中,您可以设置各种同步设置。

通常,将删除数据库备份组中的所有设置。

默认情况下,在“交易”设置组中,设置了“使用单个交易”和“将交易隔离级别设置为SERIALIZABLE”,这可以防止仅应用部分更改的情况-即 更改将全部应用或完全不应用:


摘要选项卡显示选择同步设置的结果。 如有必要,您可以返回前面的段落。

请注意,通过单击窗口左下方的“保存命令行”,也可以将同步数据库模式的设置保存在bat文件中。

最后,您需要单击“同步”以开始生成同步脚本的过程:


完成后,将在新窗口中生成脚本:



该脚本是用于将数据更改从源传输到接收器的代码。 它可以应用于服务器接收器,也可以保存到文件中,以备以后在服务器接收器上使用。

同步后,先前选择的对象应从数据比较窗口中消失。

DbForge SQL Server比较捆绑包一览


除了用于SQL Server的dbForge Studio本身之外,您还可以使用Devart的dbForge Compare Bungle for SQL Server工具(该工具内置于SQL Server Management Studio(SSMS)中)来比较数据和数据库方案。 考虑在SSMS中使用此工具的示例:


在这里,您需要右键单击所需的数据库,然后选择所需的操作:数据比较或架构比较。 之后,将所选数据库安装为源或接收器。 同样,选择第二个数据库作为接收者或源。

设置源和接收器之后,要开始配置数据同步或数据库模式,请单击屏幕中间的绿色箭头:


之后,将显示熟悉的用于设置数据同步或数据库模式的窗口,具体取决于先前选择的内容。

Quest软件解决方案


Quest Software的 ApexSQL DiffApexData Diff工具内置在SSMS中
而且,这些工具可以独立运行,而无需SSMS
深入的Quest软件解决方案概述

数据库架构同步


在主菜单中,要启动该工具,只需选择ApexSQL \ ApexSQL Diff \ Launch:


在出现的窗口中,单击下面的“新建”按钮:


数据库模式比较选项窗口打开。 现在,您需要在“数据源”选项卡上填写必填字段:


请注意下面的箭头。 它们允许您从左到右,从右到左交换设置,以及从左到右和从右到左复制设置。 接下来,单击“选项”选项卡并选择用于比较数据库架构的必要设置(您不能更改任何内容):


现在,您需要转到“高级选项”选项卡,并查看高级设置,可以根据需要进行更改。 “模式映射”选项卡包含用于比较的映射比较:


还有许多其他高级设置:
  1. “对象过滤器”选项卡的高级设置:
  2. “包裹”标签的高级设置:
  3. 其他脚本标签的高级设置:

最后,您需要单击“比较”按钮以开始比较数据库模式的过程。 最后,将出现一个窗口,其中源数据库模式对象位于左侧,而接收方数据库对象位于右侧:


窗口的底部是所选对象的定义代码,并突出显示了不同数据库中同一对象的定义代码的差异。

在这里,您需要选择用于同步数据库模式的必要对象。
之后,您需要单击带有绿色箭头“ Synchronize”的图像的按钮。

数据库同步本身的设置窗口将打开。
在“同步方向”选项卡上,设置同步方向。
接下来,单击“下一步”按钮:


依赖项选项卡显示依赖项:


在“输出选项”选项卡上,指示您需要生成同步脚本:


“摘要和警告”选项卡显示有关所选同步设置的摘要信息。 要开始创建同步脚本,请单击“创建脚本”按钮:


最后,脚本将显示:


:


«View» .


«Resources» , . «Home». SSIS-:


:


:



ApexSQL\ApexSQL Data Diff\Launch:


“New”:


. «Data sources»:


. , .

«Options» ( ):


«Advanced options» , . , . «Object mapping»:


, .

«Compare» :


:


, , . , , — .

, . «Synchronize».

.

«Synchronization direction» .

, «Next»:


«Output options» , :


«Summary and warnings» . «Create script»:


:


, :


«View» .


«Resources» , .

«Home».

:


:


RedGate解决方案


现在看工具SQL比较SQL数据比较从公司展鹏
RedGate解决方案概述


SQL Compare RedGate . «Data sources» :


, , , , -. :


«Table mapping» :


«Full» , , :


«Owner mapping» :


«Options» :


«Compare now» . «OK»:


, ( ApexSQL Diff) , :


, «Deploy»:
:


.

«Deployment method» .

«Next»:


, :



SQL Data Compare RedGate . «Data sources» :


, , , , -.

:


«Table & views» :


«columns» , , :


«Owner mapping» :


«Options» :


«Compare now» . «OK»:


, ( ApexSQL Data Diff) , :


, «Deploy»:


.

«Deployment method» .

«Next»:


, :


价格和功能比较


产品介绍1个许可证10个许可证一次购买两种产品时
ApexSQL差异599 $359 $它是亲自完成的,购买10个许可证,每个许可证两个产品的价格为539美元。
ApexSQL数据差异599 $359 $它是亲自完成的,购买10个许可证,每个许可证两个产品的价格为539美元。
SQL比较785 $785 $可以亲自提供,但需要购买10个以上的许可证
SQL数据比较785 $785 $可以亲自提供,但需要购买10个以上的许可证
SQL Server的dbForge架构比较300 $300 $一份许可证的两种产品的价格为400美元
dbForge SQL Server的数据比较300 $300 $一份许可证的两种产品的价格为400美元

还应注意上面讨论的工具的以下功能:
  1. 比较的来源可能是:
    • 一个数据库
    • 快照
    • 脚本文件夹
    • 后备
    • 版本控制系统
  2. 您可以通过命令行使用这些工具
  3. 同步可以直接执行,也可以保存同步脚本以供以后执行。 您还可以另存为bat文件

ApexSQL Diff工具的官方网站提供了该程序与SQL Compare工具的比较。

同样,对于ApexSQL Data Diff工具,提供了与SQL Data Compare工具的比较。

从上面的比较可以很容易地看出,ApexSQL中存在某些内容,而在Compare中却没有,而在Compare中却有相反的东西,但ApexSQL中却没有。 但是所有考虑的实用程序都具有必要的基本功能集,用于比较模式和数据库数据本身。

就功能和价格而言,考虑到折扣和上述材料,ApexSQL Diff和ApexSQL Data Diff产品是最佳选择。

结论


考虑了用于同步数据库模式和数据的流行实用程序:
  1. dbForge Schema比较SQL Server by Devart
  2. dbForge Data Compare for SQL Server by Devart
  3. Quest Software ApexSQL差异
  4. Quest Software的ApexSQL数据差异
  5. RedGate SQL比较
  6. RedGate SQL数据比较


还对这些产品的价格和功能进行了简要比较。

审查的结论是,价格和功能方面的最佳选择是Quest Software的ApexSQL Diff和ApexSQL Data Diff。 但是,Devart产品中的基本必要功能也足够可用:用于SQL Server的dbForge Schema Compare和用于SQL Server的dbForge Data Compare。 这些产品可以比Quest Software的同类产品ApexSQL Diff和ApexSQL Data Diff便宜得多。

Oracle DBMS也有类似的解决方案。

哪些比较器对您有帮助,以及哪些DBMS用于比较模式和数据库数据?

经过讨论


此外,在评论中和来信中的同事还推荐了以下有趣的比较器:
  1. 比较不同DBMS的模式和数据库数据
  2. 要将MS SQL Server迁移到PostgreSQL:
  3. 用于比较MS SQL Server的数据库架构和数据库数据
  4. 用于从一个DBMS切换到另一个DBMS以及比较不同DBMS的模式和数据库数据对称工具也非常好。
  5. 将Jira数据库从MS SQL Server DBMS传输到PostgreSQL DBMS


资料来源


Source: https://habr.com/ru/post/zh-CN465753/


All Articles