SSIS包循环遍历数据库以查找表并删除较旧的行

时间:2017-06-09 02:54:05

标签: sql database ssis

我需要帮助创建一个迭代通过给定服务器中的数据库的包,查找包含单词' EventLog'的表名。并删除超过一年的所有行。删除应该是50000批次。

我能够使用执行SQL任务读取数据库名称,将完整的结果集存储在对象类型变量中,并用于每个循环容器以从变量中读取结果并从那里需要帮助

1 个答案:

答案 0 :(得分:1)

如果在单个数据库中有多个表可能包含单词“EventLog”,则需要为每个容器的父级内部(每个表)添加一个额外的表。使用父容器和当前容器中的变量为每个容器在此内部构建动态删除语句。

您的包装应该与此非常相似:

控制流程 enter image description here

包变量 enter image description here 将您的日期过滤器添加到'delete_log_records_sql'变量

获取数据库名称 - 执行SQL任务 enter image description here

获取数据库名称 - 将结果分配给对象变量 enter image description here

Foreach DB - 数据库名称对象变量映射 enter image description here

Foreach DB - 数据库名称集合Var映射 enter image description here

获取表名 - 执行SQL任务 enter image description here

获取表名称 - 将结果分配给对象变量 enter image description here

Foreach表 - 表名对象变量映射 enter image description here

Foreach表 - 表名集合Var Mapping enter image description here

删除日志记录 - 执行SQL任务 enter image description here