SSIS学习之SSIS介绍(一)
12.1 SSIS介绍
SSIS首先是在1997年的SQL Server 7.0中引入的,当时它的名称为数据转换服务(DTS)。SSIS属于ETL产品家族,ETL代表提取(Extraction)、转换(Transformation)和加载(Loading)。
现在,越来越多的企业都有数据仓库。ETL是将来自OLTP数据库的数据定期加载到数据仓库中必不可少的工具。在SQL Server的前两个版本—— SQL Server 7.0和SQL Server 2000中,SSIS主要集中于提取和加载。通过使用SSIS,可以从任何数据源中提取数据以及将数据加载到任何数据源中。在SQL Server 2005中,对SSIS进行了重新设计和改进。SSIS提供控制流和数据流。控制流也称为工作流或者任务流,它更像工作流,在工作流中每个组件都是一个任务。这些任务是按预定义的顺序执行的。在任务流中可能有分支。当前任务的执行结果决定沿哪条分支前进。
数据流是新的概念。数据流也称为流水线,主要解决数据转换的问题。数据流由一组预定义的转换操作组成。数据流的起点通常是数据源(源表);数据流的终点通常是数据的目的地(目标表)。可以将数据流的执行认为是一个流水线的过程,在该过程中,每一行数据都是装配线中需要处理的零件,而每一个转换都是装配线中的处理单元。
图12-1显示了SSIS设计器。可以通过启动Business Intelligence Development Studio,然后创建一个Integration Services项目来调用SSIS设计器。在左边有一个工具箱窗口。工具箱窗口包含预定义的控制流任务和数据流转换。中间的视图窗格包含4个视图:控制流、数据流、事件处理程序和包资源管理器。控制流视图提供了一个设计环境,在这个设计环境中可以使用工具箱中与控制流相关的项来构建控制流。数据流视图也提供了一个设计环境,在这个设计环境中可以使用工具箱中与数据流相关的项来构建数据流。在事件处理程序视图中,可以定义由特定的执行事件触发的后续响应操作。包资源管理器视图提供了流的树型视图。
图12-1 SSIS设计器
12.1.1 理解SSIS包
包(package)是SSIS项目中基本的部署和执行单元。SSIS任务执行的所有工作都发生在包的上下文中。SSIS包是SSIS流的容器。可以通过以下方式来创建SSIS包:在Integration Services项目文件夹中右击“SSIS包”文件夹,然后选择“新建SSIS包”菜单项。
SSIS项目可以包含多个包。包只包含一个控制流,而该控制流可以包含一个或者多个数据流。
除了控制流和数据流,包还包含了SSIS连接和包的变量。可以有不同作用域的变量,例如,作用域为整个包的全局变量或者作用域为任务序列的局部变量。
在托盘中显示了连接和变量,如SSIS设计器底部所示(参见图12-1)。连接可以连向关系数据库,也可以连向Analysis Services数据库。
12.1.2 任务流
SSIS包包含一个控制流,该控制流由一组任务组成。这些任务定义了包的工作,例如,加载数据、执行SQL语句、处理脚本或者调用其他过程。在工具箱中列出了这些任务。可以通过以下方式将任务加入包中:从工具箱中拖动该任务,然后将它释放到包的设计器中。
在任务流中,包通常包含多个任务。多个任务是按优先权约束的顺序来进行组织的。优先权约束按以下顺序连接两个任务:执行第一个任务的结果决定是否运行第二个任务。可以在工作流中使用优先权约束来创建条件分支。可以将多个优先权约束进行组合,然后将其作为一个约束来求值。
1. 在SSIS中的标准任务
表12-1列出了SSIS任务流中的一些预构建的任务及其描述信息。
除了在下表中所列出的任务之外,SSIS还提供了简单的API,可以使用这些API来开发自己的任务。一旦注册了任务,则在工具箱中将会出现这些任务,然后可以在任务流中像所有预构建的任务一样使用这些任务。
表12-1 SSIS的任务
任 务
描 述
大容量插入任务
将来自文本文件的大量数据加载到SQL Server表中
数据流任务
支持在不同类型的数据源之间进行数据的复制和转换。一个数据流任务包含一条数据流流水线
执行包任务
运行子包
执行进程任务
将程序或者批处理文件作为包的一部分来运行
任 务
描 述
执行SQL任务
在包的执行期间运行SQL语句,然后有选择地保存这些查询的结果
文件系统任务
执行文件系统操作
FTP任务
从远程服务器或者Internet的某个位置下载数据文件,并且将这些数据文件作为包的工作流的一部分
消息队列任务
在SSIS包之间使用消息队列来发送和接收消息
脚本任务
使用脚本来执行在预构建的SSIS任务中不可用的函数。通过使用Script任务,可以在Microsoft Visual Studio for Applications(VSA)环境中使用Visual Basic.NET来编写脚本
发送邮件任务
发送电子邮件消息
XML任务
合并、过滤和转换XML文档中的数据
2. 容器
容器(container)是向包提供结构的SSIS对象。每个包都有一个容器,用来存储包的流。包的容器可以包含其他类型的容器,例如序列容器、Foreach循环容器和For循环容器,这些容器都可以在控制流工具箱中获得。可以在这些容器中定义子流。容器丰富了控制流的运行时执行模型。例如,并不是所有的任务都是顺序执行的。在Foreach循环容器内部的子流将会基于容器中定义的迭代器而多次执行。
3. 调试
对SSIS控制流进行调试是在SQL Server 2005中引入的新特性。当在设计器中选择了一个任务时,只要按下F9就可以设置断点。通过调试,可以在执行期间检查包的变量的值以及任务的状态。断点可以基于事件来设置。例如,可以基于一个任务的以下事件来设置一个或者多个断点:
● OnPreExecute
● OnPostExecute
● OnError
● OnWarning
● OnProgress
当SSIS的运行时遇到了一个断点事件时,SSIS的运行时会在包的执行期间暂停。这与在Visual Studio中调试C#代码类似。
欢迎添加我的公众号一起深入探讨技术手艺人的那些事!
如果您觉得本文的内容有趣就扫一下吧!捐赠互勉!


浙公网安备 33010602011771号