小编典典

如何在多个数据库服务器上使用MERGE语句?

sql

我的源表和目标表存在于不同的服务器上。我 Execute SQL Task 用来编写合并语句以使其同步。

谁能解释我如何引用存在于我内部不同服务器上的两个不同数据库 Execute SQL Task


阅读 161

收藏
2021-04-14

共1个答案

小编典典

可能的方法:

我建议采用以下方法,而不是尝试在两个数据库服务器之间使用 MERGE 语句 Execute SQL Task

方法1:

  • OLEDB Connection Managers 为每个SQL Server实例创建两个。例如,如果您有两个数据库SourceDB和DestinationDB,则可以创建两个名为 OLEDB_SourceDB 和的连接管理器 OLEDB_DestinationDB 。如果愿意,也可以使用ADO.NET连接管理器。根据我在基于SSIS的书籍中所阅读的内容,OLEDB的性能优于ADO.NET连接管理器。

  • 将a拖放Data Flow Task到“ 控制流” 选项卡上。

  • 在“ 数据流任务”中 ,配置, OLE DB Source 以从源数据库表中读取数据。

  • 使用 Lookup Transformation 该命令使用源表和目标表之间的唯一键检查目标表中是否已存在数据。

  • 如果源表行在 does not exist 目标表中,则使用以下命令将行插入到目标表中OLE DB Destination

  • 如果源表行在 exists 目标表中,则使用another将这些行插入到目标数据库中的登台表中OLE DB Destination

  • Execute SQL Task 在“ 控制流” 选项卡上的“数据流任务”之后放置一个。编写一个查询,该查询将使用登台表数据来更新目标表中的数据。

方法2:

  • OLEDB Connection Managers 为每个SQL Server实例创建两个。例如,如果您有两个数据库SourceDB和DestinationDB,则可以创建两个名为 OLEDB_SourceDB 和的连接管理器 OLEDB_DestinationDB

  • 将a拖放Data Flow Task到“ 控制流” 选项卡上。

  • 在“ 数据流任务”中 ,配置, OLE DB Source 以从源数据库表中读取数据并使用插入到临时表中 OLE DB Destination

  • 在“ 控制流” 选项卡上的 Execute SQL Task 后面放置一个。编写一个查询,该查询将在登台表和目标表之间使用MERGE语句。 Data Flow Task __

2021-04-14