如何解决SSIS 从一台服务器/数据库向另一台服务器/数据库插入连续数据
我有 2 个不同的服务器(Server1 和 Server2)。每个上都有一个具有相似结构的数据库(db1 和 db2)。 db1中有连续数据插入。
我想要一个作业,使用 SSIS 和 sql Server 代理作为调度程序,每天将数据从一台服务器 (db1) 提取到另一台服务器 (db2)。 我只想将新的数据(之前作业中没有传输的数据)传输到db2。
为此,我想从 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 > ?
问题是,SSIS 只允许每个 sql 执行一个连接(数据流任务也有同样的问题)。
我也考虑过临时表。但我不确定这是否正确。
如果有人有想法/提示会很棒。我没有找到太多关于此的信息,我想这是一项简单的任务。
非常感谢。
解决方法
你已经到了那里。只需使用数据流任务而不是执行 SQL 任务。一个数据流可以有两个不同的连接。
- 获取最后一个 id 并将其放入一个带有 ExecuteSQL 任务的变量中。然后连接一个数据流任务
- 使用源和目标配置数据流任务
- 在此示例中,我们使用 OLEDB 源和 SQL 命令,该命令接受使用“?”的参数
- 我们点击参数按钮并选择我们想要映射到它的变量
- 最后,通过单击目标,选择服务器连接管理器和表,然后单击映射选项卡,将目标中的字段映射到第二台服务器
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。