SSIS之Foreach循环容器应用

SSIS之Foreach循环容器应用

 通常我们需要从不同的数据库抽取数据到一个集中汇总点,这里使用SSIS包方式

  例如我们从三个库的B表抽取数据到另一个库的A表

   建表语句: 

 CREATE  TABLE  svrlist
 (
	id INT NOT NULL  IDENTITY(1,1)  PRIMARY  KEY,
	dbname VARCHAR(20)
 )
 
 INSERT INTO  svrlist (dbname)
 SELECT 'db1'
 UNION ALL
 SELECT 'db2'
  UNION ALL
 SELECT 'mhsh_monitor'

  

1.在BIDS中新建Integration Services 项目,在控制流页面拖入【执行SQL任务】,属性设置如下:

SSIS之Foreach循环容器应用_第1张图片

2.设置foreach容器

SSIS之Foreach循环容器应用_第2张图片

SSIS之Foreach循环容器应用_第3张图片

SSIS之Foreach循环容器应用_第4张图片

3 在foreach容器中放入一个【数据流任务】,双击数据流任务进入 数据流设计界面,分别在拖入工具箱-数据流源-ole db源, 工具箱-数据流目标-ole db目标

设置如下:

SSIS之Foreach循环容器应用_第5张图片

SSIS之Foreach循环容器应用_第6张图片

SSIS之Foreach循环容器应用_第7张图片

127.0.0.1.db1  读取基础表信息,数据汇总表A的链接信息 设置如下:

SSIS之Foreach循环容器应用_第8张图片

LocalHost.db1  源数据链接信息,需要动态读取foreach循环中的 数据库名称 设置如下:

SSIS之Foreach循环容器应用_第9张图片

完成,最终结果如下:

SSIS之Foreach循环容器应用_第10张图片

图中的序列容器用于启用和禁用内部子容器,脚本任务打印出从foreach中读取的数据库名称。

执行之后数据结果如下:

SSIS之Foreach循环容器应用_第11张图片

完毕。

附改进效果:

 如果某一个数据库抽取数据失败,希望foreach容器只记录此DB数据库,跳过此次循环继续下一次只到循环完成,相当于C#中continute效果,默认是遇到错误就停止。

 1.设置foreach容器的ForceExcutionResult属性为Success

 2.设置foreach容器中记录错误的组件ForceExcutionResult为Completion

 3.其他容器默认设置为None

SSIS之Foreach循环容器应用_第12张图片

执行结果如上。

posted on 2011-05-12 11:47  Henry.Lau 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/Henry1225/archive/2011/05/12/2044181.html

你可能感兴趣的:(SSIS之Foreach循环容器应用)