什么是DTS?SSIS?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
什么是DTS?SSIS?
什么是 DTS? DTS是⼀组⼯具,⽤于⼀个或多个数据源(如Microsoft SQL Server、Microsoft Excel 或 Microsoft Access )间导⼊、导出和转换各种数据。
通过 OLE DB (⼀种数据访问的开放式标准)提供连接,通过⽤于 ODBC的 OLE DB 提供程序来⽀持 ODBC (开放式数据库连接)数据源。
可以将 DTS解决⽅案创建为⼀个或多个软件包。
每个软件包可包含⼀组已安排好的任务,它们定义要执⾏的⼯作、对数据和对象的转换、定义任务执⾏的⼯作流约束条件以及数据源和⽬标间的连接⽅式。
DTS 软件包还提供⼀些服务,如记录软件包执⾏详细情况、控制事务和处理全局变量。
以下⼯具可⽤于创建和执⾏ DTS 软件包:
●导⼊/导出向导⽤于⽣成相对简单的 DTS 软件包,并⽀持数据移植和简单转换。
●DTS设计器以图形⽅式来实现 DTS 对象模型,可⽤于创建具有⼀系列功能的 DTS 软件包。
●DTSRun 是⽤于执⾏现有 DTS 软件包的命令提⽰实⽤程序。
●DTSRunUI 是 DTSRun 的图形界⾯,可以传递全局变量以及⽣成命令⾏。
●SQLAgent 不是 DTS 应⽤程序,DTS 将其⽤于安排软件包的执⾏。
使⽤ DTS对象模型还可以⽤编程⽅式创建和运⾏软件包,⽣成⾃定义任务和⾃定义转换。
DTS 的新功能 Microsoft SQL Server 2000 中加⼊了多种 DTS 增强功能和新功能:
●新的 DTS 任务包括 FTP 任务、执⾏软件包任务、动态属性任务和信息队列任务。
●增强的记录功能可以保存每个软件包的执⾏信息,从⽽为您保留⼀个完整的执⾏历史记录,并可以查看每⼀任务的每个进程的信息。
可以⽣成异常情况⽂件,⽂件中包含因错误⽽⽆法处理的数据⾏。
●您可以将 DTS 软件包另存为 Microsoft Visual Basic? ⽂件。
●新的多阶段数据泵允许⾼级⽤户⾃定义不同阶段的数据转换操作。
还可以将全局变量⽤作查询的输⼊参数。
●您可以在 DTS 转换任务和执⾏ SQL 任务时使⽤参数化源查询。
●可以使⽤执⾏软件包任务将全局变量的值从⽗软件包动态分配到⼦软件包。
使⽤ DTS 设计器 DTS 设计器以图形⽅式实现 DTS 对象模型,使您可以⽤图形⽅式创建DTS 软件包。
您可以使⽤ DTS设计器执⾏以下任务:
●创建包含⼀个或多个步骤的的简单软件包。
●创建包括复杂⼯作流的软件包,这些⼯作流包括多个步骤,⽽这些步骤使⽤条件逻辑、事件驱动代码或与数据源的多种连接。
●编辑现有软件包。
DTS 设计器界⾯包括⼀个⼯作区(⽤于⽣成软件包)、⼏个⼯具栏(其中包含可拖动到设计⼯作表上的软件包元素)以及⼏个菜单(其中包含⼯作流和软件包管理命令)。
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的概念上更多元化了。
Integration Services 包括⽤于⽣成和调试包的图形⼯具和向导;⽤于执⾏⼯作流函数(如 FTP 操作)、执⾏ SQL 语句或发送电⼦邮件的任务;⽤于提取和加载数据的数据源和⽬标;⽤于清理、聚合、合并和复制数据的转换;⽤于管理 Integration Services 的管理服务Integration Services 服务;以及⽤于对 Integration Services 对象模型编程的应⽤程序编程接⼝ (API)。