我的源和目标表存在于不同的服务器上。我正在使用Execute SQL Task
编写合并语句来同步它们。
谁能解释我如何引用我内部不同服务器上存在的两个不同数据库Execute SQL Task
?
我的源和目标表存在于不同的服务器上。我正在使用Execute SQL Task
编写合并语句来同步它们。
谁能解释我如何引用我内部不同服务器上存在的两个不同数据库Execute SQL Task
?
我建议采用以下方法,而不是尝试在两个数据库服务器之间使用MERGE
语句。Execute SQL Task
OLEDB Connection Managers
为每个 SQL Server 实例创建两个。例如,如果您有两个数据库 SourceDB 和 DestinationDB,您可以创建两个名为OLEDB_SourceDB
和的连接管理器OLEDB_DestinationDB
。如果您愿意,也可以使用 ADO.NET 连接管理器。根据我在基于 SSIS 的书籍中阅读的内容,OLEDB 的性能优于 ADO.NET 连接管理器。
将 a 拖放Data Flow Task
到“控制流”选项卡上。
在Data Flow Task中,配置一个OLE DB Source
从源数据库表中读取数据。
使用Lookup Transformation
它使用源表和目标表之间的唯一键检查数据是否已存在于目标表中。
如果目标表中的源表行does not exist
,则使用插入行到目标表中OLE DB Destination
如果源表行在exists
目标表中,则使用另一个OLE DB Destination
.
在控制流选项卡Execute SQL Task
上的数据流任务之后放置一个。编写一个查询,该查询将使用临时表数据更新目标表中的数据。
检查以下 SO 问题的答案以获取详细步骤。
如何优化 SSIS 包中的 Upsert(更新和插入)操作?
OLEDB Connection Managers
为每个 SQL Server 实例创建两个。例如,如果您有两个数据库 SourceDB 和 DestinationDB,您可以创建两个名为OLEDB_SourceDB
和的连接管理器OLEDB_DestinationDB
。
将 a 拖放Data Flow Task
到“控制流”选项卡上。
在数据流任务中,配置一个OLE DB Source
以从源数据库表中读取数据并使用OLE DB Destination
.
Execute SQL Task
在控制流选项卡Data Flow Task
上放置一个。编写一个在临时表和目标表之间使用 MERGE 语句的查询。
请参阅此链接 - http://technet.microsoft.com/en-us/library/cc280522%28v=sql.105%29.aspx
基本上,要做到这一点,您需要使用数据流任务将来自不同服务器的数据获取到同一个位置,然后执行执行 SQL 任务来进行合并。
Merge 和 Merge Join SSIS Data Flow 任务看起来不像您想做的那样。