七.SSIS的控制流之序列容器
序列容器是一种十分简单,但使用非常广泛的容器,它可以对控制流的任务流组件进行结构化处理,把一些业务相关的任务组件,放到一个序列容器中,使整个包看起来更加整洁、美观,就如同我们家里的书柜、衣柜似的,把不同种类的东西整理在里面,收藏起来,既美观,又易于取用。它是将一个或多个控件作为一个工作单元来处理。例如:
在图中序列容器包含两个执行Sql语句的控件。是将这两个控件组合成一个控件。只有两个控件都执行成功后,才能继续执行下面的流程。序列容器的作用就是这些。不需要配置,也不要编写代码。只要将控件拖放到序列容器即可。有点类似我们C# 中用户控件一样。
我这里有一个名为SQLTxt的文件夹
里面有连个脚本文件,分别创建两张数据表
首先,我们拖入一个序列容器,里面分别拖入两个 ,分别命名为Drop Database和Create Database,将Drop Database的Success约束连接到Create Database,双击 Drop DataBase,如下图
新建一个数据连接
确定后,在编辑T-SQL语句内容
IF EXISTS(SELECT 1 FROM master.sys.databases WHERE name='SSISDB')
DROP DATABASE SSISDB
这条语句的作用是检测名为“SSISDB”的数据库是否存在,如果村子啊就删除改数据库
双击 Create DataBase
操作同Drop Database相同,不过TSQL语句变为建立名为 "SSISDB"的数据库,确定保存,
接下来我要用SQLTxt文件夹中的SQL脚本文件创建表,同上一章Foreach容器一样,先建立一个名为FileName的String类型变量,然后拖入一个Foreach容器,在Foreach容器内放置一个
双击Foreach容器,设置如下,如有不懂请参考上一章《六.SSIS的控制流之Foreach循环容器[转载]》
接下来我们 连接管理器 右键 创建 文件连接
文件路径可以随便选择一个文件,确定后 修改连接名称蚊 SqlStr
右键 SqlStr ->属性
将ConnectionString 的内容清空,然后点击Expressions后面的...
属性栏选择 ConnectionString
然后单击表达式后的...,在变量中选中我们创建的FileName变量,将其拖入到下方的表达式中后会自动生生表达式,确定保存
接下来,在Foreach容器中拖入一个 “执行 SQL 任务”控制流项将其命名为“创建数据表”,双击进入属性编辑
SQLSourceType 为文件链接,FileConnection为我们刚刚创建的文件链接,
确定保存。下面我们执行包,所有流程通过,效果如下