ssis foreach循环里数据流任务动态建立数据库连接的错误处理

0
ssis foreach循环里数据流任务动态建立数据库连接的错误处理
 
数据流任务包含一个ole db 源 和 ole db 目标,其中 ole db 源的数据库连接是动态建立的(foreach前有个sql任务返回不同服务器数据库的连接),需求是在有些数据库连接不成功时,忽略错误,继续循环,即continue;
 
目前测试发现以下问题:
1、ole db 源的动态连接,如果第一次循环就错误,会阻塞任务,虽然可以通过MaximumErrorCount避开,但比较麻烦;
2、ole db 源的动态连接,如果第一次循环正确,第二次循环错误(服务器连不上),发现第二次连接会沿用第一次循环的连接,继续执行ole db  目标;
 
请问,针对这种需求,有没有好的解决方案,谢谢!
 
 
已邀请:
1

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2016-01-11 回答

不太清楚你的数据源链接有多少个?另外,你的数据源链接中的源表结构看你的描述表字段和表类型结构是完全一样的,否则是无法做到链接动态替换的,对吗?

但我在我的印象中,SSIS 会“记忆”上一次的链接,也就是说尽管你在循环中替换了链接字符串,让它在循环中自动将数据源指向 A, 第二次指向 B,第三次指向 C.... 但是实际上它的 Mapping 关系还是默认的记忆在第一次 A,这是我以前做项目中碰到的一个问题。所以,不能确定这种方式是否是一种有效的解决方案。

如果你的数据源不是非常多,源表结构完全相同,你完全可以使用 UNION ALL 来合并数据源数据然后插入统一的目标表。
08213156-4487c78477424b2ba776e054be1d9334.png

可以参考 微软BI 之SSIS 系列 - Merge, Merge Join, Union All 合并组件的使用以及Sort 排序组件同步异步的问题 
 

要回复问题请先登录注册