什么是 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)。


基础知识:
ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-CHS/s10is_1devconc/html/0fc6e3a7-1c12-444a-b1ef-ead622f805d2.htm
http://support.microsoft.com/kb/918760
http://wenku.baidu.com/view/acbf1808763231126edb1174.html
http://www.cnblogs.com/unruledboy/archive/2010/06/29/SSISHelloWorld.html   实例
http://wenku.baidu.com/view/cb11f2116c175f0e7cd13799.html  SQLServer2005中SSIS批量导入Excel文件
http://wenku.baidu.com/view/fc3804d9ad51f01dc281f15a.html
SIS包的部署、配置、定期执行2
http://msdn.microsoft.com/zh-cn/library/bb522535.aspx
http://msdn.microsoft.com/zh-cn/library/ms137709.aspx


http://wenku.baidu.com/view/acbf1808763231126edb1174.html
http://wenku.baidu.com/view/6c130a06eff9aef8941e0621.html?from=related&hasrec=1
http://wenku.baidu.com/album/view/cee5650e52ea551810a687fe
http://wenku.baidu.com/view/cb11f2116c175f0e7cd13799.html
http://www.cnblogs.com/chiniao/archive/2009/12/22/1629811.html
http://wenku.baidu.com/view/06a425ec102de2bd96058894.html
http://wenku.baidu.com/view/652d4b2758fb770bf78a5562.html?from=related&hasrec=1
http://wenku.baidu.com/view/acbf1808763231126edb1174.html
http://support.microsoft.com/kb/918760
http://wenku.baidu.com/album/view/3d1d24ea81c758f5f61f67cd
http://wenku.baidu.com/view/6c130a06eff9aef8941e0621.html?from=related&hasrec=1
http://www.cnblogs.com/chiniao/archive/2009/12/22/1629945.html
http://www.cnblogs.com/unruledboy/archive/2010/06/29/SSISHelloWorld.html
http://msdn.microsoft.com/zh-cn/library/ms141026.aspx
http://www.cnblogs.com/chenxizhang/archive/2009/06/20/1507386.html
配置:t-sql
http://www.cnblogs.com/chiniao/archive/2009/12/23/1630595.html

原文地址:https://www.cnblogs.com/mistor/p/2278299.html