SSIS 将连续数据从一个服务器/数据库插入到另一个

SSIS Insert continuous data from one server / database to another

我有 2 个不同的服务器(服务器 1 和服务器 2)。每个上都有一个具有相似结构的数据库(db1 和 db2)。 db1中有连续的数据插入。

我想要一个作业,每天使用 SSIS 和调度程序的 SQL 服务器代理将数据从一台服务器 (db1) 提取到另一台服务器 (db2)。 我只想将新数据(未在早期作业中传输的数据)传输到 db2。

为此,我想 select db2 的最后一个 ID,并使用它仅传输来自 db1 的具有更高 ID 的数据。

这个概念本身可行,但我不知道如何用 SSIS 实现它。

在 SSIS 中,我尝试使用 SQL 执行任务并将其安全保存到变量中:

第一个任务(保护变量中的 id): SELECT TOP (1) [ID] FROM [DB2] ORDER BY ID DESC

第二个任务(将行安全保存到对象变量中): SELECT * FROM [DB1] where ID > ?

可以,但是我怎样才能将对象变量插入到 db2 中。

有没有更简洁的方式,例如:

Insert into Server2.[db2] select * from Server1.[db1] where ID > ? 

问题是,对于每个 SQL 执行,SSIS 只允许 一个 连接(与数据流任务相同的问题)。

我也考虑过临时表。但是我不确定这是不是正确的方法。

如果有人有想法/提示就太好了。我对此了解不多,我想这是一项简单的任务。

非常感谢。

你已经完成大部分了。只需使用数据流任务而不是执行 SQL 任务。一个数据流可以有两个不同的连接。

  1. 获取最后一个 id 并将其放入带有 ExecuteSQL 任务的变量中。然后连接一个数据流任务

  1. 使用源和目标配置数据流任务

  1. 在此示例中,我们使用带有 SQL 命令的 OLEDB 源,该命令接受使用“?”的参数。

  1. 我们点击参数按钮和select我们想要映射到它的变量

  1. 最后,通过单击目标将目标中的字段映射到第二个服务器,select使用服务器连接管理器和 table,然后单击映射选项卡