我的源和目标表存在于不同的服务器上。我正在使用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 任务看起来不像您想做的那样。