【IT168 技术文档】
对于“拿来主义”我举手赞成
集成服务是SQL Server 2005中面向高性能数据集成的功能组成,它有一个配套的数据流机制和控制流机制,并且可以为数据分析服务提供必要的ETL支持。集成服务类似以往的DTS,采用包(Package)方式来执行一个个具有数据流支持的数据任务。除此之外,集成服务还有很完善的图形化管理工具和丰富的应用开发接口(API)。SQL Server 2005单独把集成这一部分独立成独立的服务,充分表明微软对其作为数据平台而不是单纯数据库产品的定位。在放弃了以往DTS之后,微软用.Net重写了集成服务,并把它分成了面向流程处理的Integration Service run-time engine和面向数据转换的Integration Service data flow engine,同时由于重新开发的缘故,保证.Net开发人员可以不通过互操作访问集成服务,可以说为未来SQL Server集成功能的发展提前“脱胎换骨”。
集成服务的系统架构

图1:集成服务的总体架构
总体上讲,集成服务由四个部分组成,如下说明。
Integration Services service:主要用来监控所有包的执行,并管理包的存储。
Integration Services object model:通过提供一组API来支持命令行工具、图形化工具和用户二次开发。
Integration Services runtime and the run-time executables:具体完成包的执行过程。
Data Flow task:提供了内存的缓冲结构用于保存从源数据源到目的数据源的中间结果,根据包的配置对提取的源数据进行清洗和修改,并控制整个包设计的数据文件和数据库访问。
相对DTS的跨越式进步
笔者相信很多读者在初次进入集成服务界面的时候,会觉得与DTS似曾相识而且很多功能特性基本上雷同,但是笔者要说明的是这都是UI上的共同点,本质上集成服务已经有了跨越式的发展。回顾以往DTS的功能,其实对于数据的加工功能非常有限,仅仅提供简单的转换支持,但是在集成服务中不仅可以完成数据转换,还可以进行数据清理(Cleaning)和聚合(Aggregating),此外还提供了笔者一直期待的合并(Merging)和复制(Copying)(相信这两个也是很多读者期待已久的功能)。另外,相对于以往简单的ActiveX脚本,新的集成服务支持读者通过.Net代码来完成转换,这大大增强了数据转换的控制能力。更为重要的是可以把整个数据包作为对象来调用,这样对于解决应用中繁杂的数据提取、转换和存储工作有很大帮助,可以充分法发挥.Net Assembly与包两种执行载体的优势。
增强了的“包”处理
与DTS类似,SQL Server 2005中的集成服务的包也是由数据源连接、控制流、数据流、时间处理、包参数和配置组成的,新的集成服务中既可以用图形设计器或.Net语言开发包,包是Integration Service提取、执行和保存的单元。一个最基本的包是由一个控制流和数据流组成,而且可以通过一个包模版生成,所有的开发工作可以在Visual Studio 2005或者SQL Server Business Intelligent Development Studio中完成。

图2:集成到Visual Studio 2005的SSIS开发环境
其中,控制流元素主要描述的了包中Task的布局,每个Task之间的优先次序和它们如何与数据源连接关联并执行的,为了方便逻辑上可以把一组相关的Task共同保存在一个Container中,可以把它们们作为一个集合进行各种配置。控制流的逻辑示意结构如下:

图3:控制流的逻辑示意结构