微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSIS 从一台服务器/数据库向另一台服务器/数据库插入连续数据

如何解决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 任务。一个数据流可以有两个不同的连接。

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

enter image description here

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

enter image description here

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

enter image description here

  1. 我们点击参数按钮并选择我们想要映射到它的变量

enter image description here

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。