Sql Server 7开始出现的DTS在Sql Server 2000下发挥了不小的数据导入导出功能,开始研究Sql Server 2005,发现DTS没有了,变成了SSIS。很多Sql server 2000下的DTS包不能直接编辑和使用了,赶快充电。
在Chinapub上订了两本书:
SQL Server 2005数据库开发详解 ¥60.84 北京发送
Microsoft SQL Server 2005开发指南 ¥38.92 北京发送
本文是一篇官方的SSIS的介绍文字,有兴趣的朋友不妨看看到底微软的Business Intelligence工具到底是什么。
SSIS(SQL Server Integration Service)是Sql Server 2005的一大亮点,相比较SQL Server 2000的DTS,无论是在可视化的编辑环境还是API接口上都有了很大的进步。但SSIS并不简单的是DTS的升级版本,DTS在底层的实现上据说已经被大幅度的修改, 现在的SSIS看起来越来越像一个专业的ETL工具。在可视化操作方面,微软继续着自己在这方面的优势,已经几乎无所不包的Visual Studio 2005又把SSIS中的ETL操作加入进来,新建一个New Project,选择Business Intelligence Projects中的Integration Service Project,马上就能看到SSIS可视化环境的庐山真面目了。
熟悉了SSIS的可视化操作后,给你的感觉应该是震撼的,因为几乎你所能想得到的ETL操作都能通过简单托拽控件加以实现。
主要得益于SSIS强大Control Flow Function以及那个灵活多样并且高效的DataFlow Task (BulkInsertTask和Execute SQL Task等可以看成特殊的DataFlowTask)。Control Flow主要负责高层的逻辑拓扑,完成对各个DataFlowTask单元的串接,而DataFlowTask除了提供简单的SQL语句的执行,两个节点之间的数据传输外,还提供了Aggregation、DataConversion,Merge、Sort等操作,实现了面向多个源和目的端的复杂数据流的整合。另外值得一提的是,SSIS同时也提供For/Foreach Loop Container来完成类似for语句的循环操作。
SSIS的另一个特色是的参数设置功能,这一点比DTS有了明显的进步。连接参数,源与目的关联的表名或者SQL语句的条件子句,都可以通过参数来构建,甚至参数本身可以由其他参数动态赋值(通过Expression功能),这就给用户提供了非常广阔界面编程的空间,充分发挥你的想象力,就能够在可视化界面上实现复杂逻辑功能的ETL操作。
SSIS强大的参数设置功能在一定程度上简化了SSIS的Package(Package:SSIS基本的可执行单位)程序调用。在Visual Studio 中一个SSIS包的对应一个.dtsx文件,C#(或者其他支持CRL的语言)执行一个Package过程典型地分为以下三个步骤:一,用一个XmlDocument装载指定路径的.dtsx文件,然后由Package类将该XmlDocument进行解析,此时在后台构建了Package内部的各个部件,比如ConnectionManagers,Variables,各种类型的Task等;二,对各种参数进行赋值,比如提供数据库连接所需的ServerName和DBName,SQL语句中where条件子句部分的赋值;
三,调用Package类的Execute方法,启动本次SSIS Package的执行,这里实际上还隐含包括了Package执行前非常重要的
validation过程,Package的错误信息将在这个阶段被检查出来。另外DefaultEvent接口提供了包执行过程中各种事件的响应函数集,可以被Execute方法通过参数的形式回调。
可视化界面把关于数据流的各种操作变得“傻瓜”了,不过如果想构建一些在可视化界面上无法完成的复杂任务,或者在Packgae中添加特定的业务逻辑,或者说你本身就不喜欢Visual Studio上“傻瓜式”的操作,而特别钟爱自己的Programming(没办法,喜欢折腾的人总还是有的),那你可以借助SSIS的API,从零开始构建一个Package包。实际上这与通过Visual Studio构建一个包没有本质的区别,因为两者最后都是生成一个.dtsx文件(可以通过改成.xml,在浏览器中察看)。不过这种舍近求远的方式看起来似乎有些另类,也没有得到太多的支持。查阅了msdn2上关于这方面的例子,都是寥寥几句,论坛上碰到几个microsoft online的大牛,结论就是现在的SSIS不鼓励这样的使用方式。办法总还是有的,突破点就在那个.dtsx文件。
通过程序构建SSIS Package可以与界面上的方式一一对应。如果初次用程序构建Package,失败的可能性会很大,所以在编程过程中,可以调用Package的SaveToXml方法,获取Programming下Package对应的XML文档,同时与Visual Studio中的那个正确.dtsx文件进行比较,然后基本上就能发现问题了。程序中用的比较多的,同时也比较容易出错是数据流input columns与outputcolumns之间的映射,这一点与原来的DTS是类似的,不同的地方是扩展后的SSIS 在input/out的概念上更多元化了。
总体上看,SSIS比以前的DTS有了很大的进步,据说在性能上比DTS提高了600%(哈,是不是有谁又在吹牛了?)另外,比较遗憾的是SQL Server在大规模数据的处理上仍旧算不上完美,偶尔还会弹出莫名其妙的对话框,然后只能选择退出。是CRL的问题,还是SQL Server的问题?反正是MS的问题啦。
我現在正在單位學習SSIS,還沒有學怎麼會就開始做東西。我們可以交流交流嘛,我需要技術支持啊。關於SSIS還有許多控件不知道怎麼用,希望能有機會請教你。
我的msn::san_gang@hotmail.com
可以到网站或者msdn上先了解一下各个控件的用法。如 http://www.itpob.net 就很不错。