创建 2 个 OLE DB 连接管理器。将它们命名为 Production 和 Archive,并让它们指向正确的服务器和数据库。这些 CM 是 SSIS 用来从数据库中推送和拉取数据的工具。
添加数据流任务。DFT 是允许逐行操作数据的可执行文件。双击数据流任务。进入后,将 OLE DB 源和 OLE DB 目标添加到画布。OLE DB 源是数据的来源,而 OLE DB 目标提供插入功能。
您想要实现的逻辑是删除第一方法,就像我在另一个答案中概述的那样。
DELETE
DF
OUTPUT
DELETED.*
FROM
dbo.DeleteFirst AS DF
WHERE
DF.RecordDate > dateadd(y, 3, current_timestamp);
此查询将删除所有超过 3 年的行并将它们推送到数据流中。在您的 OLE DB 源中,进行以下配置更改
- 将连接管理器从更改
Archive
为Production
- 将查询类型从“表或视图”更改为“查询”
- 粘贴您的查询并单击“列”选项卡以仔细检查已解析的查询
将 OLE DB 源连接到 OLE DB 目标。双击 OLE DB 目标并进行配置
- 验证连接管理器是
Archive
- 确保访问模式为“表或视图 - 快速加载”(近似名称)
- 您可能需要根据您的表设计检查保留 ID - 如果您有标识列,那么如果您希望生产系统中的 ID 10 成为存档系统中的 ID 10,请检查它
- 选择实际表
- 在映射选项卡上,确保所有列都已映射。它通过匹配名称自动执行此操作,因此应该没有问题。
如果不需要跨实例,上面的逻辑可以浓缩成一个Execute SQL Task
DELETE
DF
OUTPUT
DELETED.*
INTO
ArchiveDatabase.dbo.DeleteFirst
FROM
dbo.DeleteFirst AS DF
WHERE
DF.RecordDate > dateadd(y, 3, current_timestamp);
另请注意,如果您有标识列,则需要提供显式列列表并打开和关闭 IDENTITY_INSERT 属性。