ssis foreach循环里数据流任务动态建立数据库连接的错误处理
0
ssis foreach循环里数据流任务动态建立数据库连接的错误处理
数据流任务包含一个ole db 源 和 ole db 目标,其中 ole db 源的数据库连接是动态建立的(foreach前有个sql任务返回不同服务器数据库的连接),需求是在有些数据库连接不成功时,忽略错误,继续循环,即continue;
目前测试发现以下问题:
1、ole db 源的动态连接,如果第一次循环就错误,会阻塞任务,虽然可以通过MaximumErrorCount避开,但比较麻烦;
2、ole db 源的动态连接,如果第一次循环正确,第二次循环错误(服务器连不上),发现第二次连接会沿用第一次循环的连接,继续执行ole db 目标;
请问,针对这种需求,有没有好的解决方案,谢谢!
数据流任务包含一个ole db 源 和 ole db 目标,其中 ole db 源的数据库连接是动态建立的(foreach前有个sql任务返回不同服务器数据库的连接),需求是在有些数据库连接不成功时,忽略错误,继续循环,即continue;
目前测试发现以下问题:
1、ole db 源的动态连接,如果第一次循环就错误,会阻塞任务,虽然可以通过MaximumErrorCount避开,但比较麻烦;
2、ole db 源的动态连接,如果第一次循环正确,第二次循环错误(服务器连不上),发现第二次连接会沿用第一次循环的连接,继续执行ole db 目标;
请问,针对这种需求,有没有好的解决方案,谢谢!
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
1 个回复
BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2016-01-11 回答
赞同来自: zony
但我在我的印象中,SSIS 会“记忆”上一次的链接,也就是说尽管你在循环中替换了链接字符串,让它在循环中自动将数据源指向 A, 第二次指向 B,第三次指向 C.... 但是实际上它的 Mapping 关系还是默认的记忆在第一次 A,这是我以前做项目中碰到的一个问题。所以,不能确定这种方式是否是一种有效的解决方案。
如果你的数据源不是非常多,源表结构完全相同,你完全可以使用 UNION ALL 来合并数据源数据然后插入统一的目标表。
可以参考 微软BI 之SSIS 系列 - Merge, Merge Join, Union All 合并组件的使用以及Sort 排序组件同步异步的问题