快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

如何:比较和同步两个数据库的数据

请联系QQ:1793040 索取软件

您可以比较两个数据库中包含的数据。您比较的数据库称为数据库和目标数据库

 注意

数据库项目和.dacpac或.bacpac程序包不能作为数据比较的源或目标。

在比较数据时,将生成一个数据处理语言(DML)脚本,您可以使用该脚本通过更新目标数据库上的某些或所有数据来同步不同的数据库。数据比较完成后,其结果将显示在Visual Studio的“数据比较”窗口中。

比较完成后,您可以执行其他步骤:

  • 您可以查看两个数据库之间的差异。有关更多信息,请参见查看数据差异
  • 您可以更新全部或部分目标以匹配源。有关更多信息,请参见同步数据库数据

有关更多信息,请参见将一个或多个表中的数据与参考数据库中的数据进行比较和同步

 注意

您还可以比较两个数据库或同一数据库的两个版本的架构。有关更多信息,请参见如何:使用模式比较比较不同的数据库定义

比较数据库数据

使用“新建数据比较向导”比较数据

  1. SQL菜单上,指向数据比较,然后单击新建数据比较

    出现“新数据比较”向导。此外,还将打开“数据比较”窗口,Visual Studio会自动为其分配一个名称,例如DataCompare1。

  2. 标识源数据库和目标数据库。

    如果“ 源数据库”列表或“ 目标数据库”列表为空,则单击“ 新建连接”。在“ 连接属性”对话框中,标识数据库所在的服务器以及连接到数据库时要使用的身份验证类型。然后,单击“ 确定”关闭“ 连接属性”对话框,并返回到“数据比较”向导。

    在“数据比较”向导的第一页上,验证每个数据库的信息正确无误,指定要在结果中包括哪些记录,然后单击“ 下一步”。出现“数据比较”向导的第二页,并显示数据库中表和视图的层次结构列表。

  3. 选中要比较的表和视图的复选框。(可选)展开数据库对象的节点,然后选中要比较的那些对象内的列的复选框。

     注意

    表和视图必须满足两个条件才能出现在列表中。首先,对象的模式必须在源数据库和目标数据库之间匹配。其次,列表中仅显示具有主键,唯一键,唯一索引或唯一约束的表和视图。如果没有表或视图都符合这两个条件,则列表将为空。

  4. 如果存在多个键,则可以使用“ 比较键”列指定数据比较所基于的键。例如,您可以指定是基于主键列还是基于另一个(唯一可标识)键列进行比较。
  5. 点击完成

    比较开始。

     注意

    通过打开SQL菜单,单击“ 数据比较”,然后单击“ 停止数据比较”,可以停止正在进行的数据比较操作。

    比较完成后,您可以查看两个数据库之间的数据差异。您还可以更新目标数据库中的部分或全部数据,以匹配源数据库中的数据。

使用Visual Studio自动化模型比较数据

  1. 打开“ 查看”菜单,指向“ 其他窗口”,然后单击“ 命令窗口”
  2. 在命令窗口中,键入以下命令:

    Sql.NewDataComparison /SrcServerName sServerName /SrcDatabaseName sDatabaseName /SrcUserName sUserName /SrcPassword sPassword /SrcDisplayName sDisplayName /TargetServerName tServerName /TargetDatabaseName tDatabaseName /TargeUserName tUserName /TargetPassword tPassword /TargetDisplayName tDisplayName  
    

    将占位符(sServerNamesDatabaseNamesUserNamesPasswordsDisplayNametServerNametDatabaseNametUserNametPasswordtDisplayName)替换为源数据库和目标数据库的值。

    如果未指定源和目标,则将出现“ 新建数据比较”对话框。有关Sql.NewDataComparison命令的参数的更多信息,请参见Visual Studio Team System的数据库功能的自动化命令参考

    比较指定源数据库和目标数据库中的数据。结果显示在“数据比较”会话中。有关如何查看结果或同步数据的更多信息,请参见查看数据差异同步数据库数据

查看数据差异

在两个数据库中比较数据之后,数据比较将列出您比较的每个数据库对象及其状态。您还可以按状态分组查看每个对象内记录的结果。有关状态指定的更多信息,请参见将一个或多个表中的数据与参考数据库中的数据进行比较和同步

查看差异后,可以更新目标以与某些,全部不同,缺失或新的对象或记录的源相匹配。有关更多信息,请参见同步数据库数据

查看数据差异

  1. 比较源数据库和目标数据库中的数据。有关更多信息,请参见比较数据库数据
  2. (可选)执行以下一项或两项操作:
    • 默认情况下,将显示所有对象的结果,无论其状态如何。要仅显示具有特定状态的那些对象,请在“ 过滤器”列表中单击一个选项。
    • 要查看特定对象内记录的结果,请在主结果窗格中单击该对象,然后在“记录”视图窗格中单击一个选项卡。每个选项卡显示该对象内具有特定状态的所有记录:不同,仅在源中,仅在目标中,并且相同。数据按记录和列显示。

同步数据库数据

比较两个数据库中的数据后,可以通过更新全部或部分目标以匹配源来同步它们。您可以在两种数据库对象中比较数据:表和视图。

使用写入更新命令更新目标数据

  1. 比较源数据库和目标数据库中的数据。有关更多信息,请参见比较数据库数据

    比较完成后,“数据比较”窗口将列出比较对象的结果。四列(名为“不同记录”,“仅在源中”,“仅在目标中”和“相同的记录”)显示有关不相同对象的信息。对于每个这样的对象,这些列显示发现有多少记录不同,以及更新操作将更改多少记录。最初这两个数字匹配,但是在步骤4中,您可以更改要更新的对象。

    有关更多信息,请参见将一个或多个表中的数据与参考数据库中的数据进行比较和同步

  2. 在“数据比较”窗口的表中,单击一行。

    详细信息窗格显示您单击的数据库对象中记录的结果。记录按状态分组到选项卡上,您可以使用它们指定将从源传播到目标的数据。

  3. 在详细信息窗格中,单击一个选项卡,其名称包含非零(0)的数字。

    “ 仅在目标中”表的“ 更新”列包含复选框,可用于选择要更新的行。默认情况下,选中每个复选框。

  4. 清除目标中您不想使用源数据更新的记录的复选框。

    清除复选框后,将减少要更新的记录数,并且显示将更改以反映您的操作。该数字显示在详细信息窗格的状态行和主结果窗格的相应列中,如步骤1所述。

  5. (可选)点击生成脚本

    将打开一个Transact-SQL编辑器窗口,并显示将用于更新目标的数据处理语言(DML)脚本。

  6. 要同步不同,丢失或新的记录,请点击更新目标

     注意

    在更新目标数据库时,您可以通过单击停止写入目标来取消操作。

    目标中所选记录的数据将使用源中相应记录的数据进行更新。

     注意

    如果您选择更新索引视图,则此操作导致将重复的键插入同一张表中时,“ 更新目标”操作可能会失败。

使用Transact-SQL脚本更新目标数据

  1. 比较源数据库和目标数据库中的数据。有关更多信息,请参见比较数据库数据

    比较完成后,“数据比较”窗口将列出被比较的对象。有关更多信息,请参见将一个或多个表中的数据与参考数据库中的数据进行比较和同步

  2. (可选)在详细信息窗格中,清除目标中您不想更新的记录的复选框,如上一过程所述。
  3. 单击生成脚本

    一个新窗口显示了Transact-SQL脚本,该脚本将传播必要的更改,以使目标中的数据与源中的数据匹配。新窗口将使用诸如DataUpdate_Database_1.sql之类的名称。

    该脚本反映了您在详细信息窗格中所做的更改。例如,您可能已清除[dbo]。[Shippers]表的“仅在目标中”页面中给定行的复选框。在这种情况下,脚本将不会更新该行。

  4. (可选)在DataUpdate_Database_1.sql窗口中编辑此脚本。
  5. (可选,但建议)备份目标数据库。
  6. 单击执行以更新目标数据库。

    指定与您要更新的目标数据库的连接。

     重要

    默认情况下,更新发生在事务范围内。如果发生错误,则可以回滚整个更新。您可以更改此行为。

    目标中所选记录的数据将使用源中相应记录的数据进行更新。

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1793040