数据转换服务 (DTS) 对于 SQL Server 2005 而言,是一项全新的技术。DTS 是 SQL Server 2000 中很受欢迎的一项功能,但 DTS 2005 已被重新设计成企业 ETL 平台。DTS 为构建企业级 ETL 应用程序提供了大量必需的功能,以及非常高的扩展性能。DTS 是完全可编程的、嵌入式的、可扩展的——所有这些特性都使它成为理想的 ETL 平台。
下表总结了 DTS 2005 的这些功能。有关 ETL 系统开发 DTS 适用性更加完整的讨论,请参阅 SQL Server 联机丛书。
包开发
SQL Server 2005 的 DTS 功能 | 企业 ETL 开发 | ETL 平台 |
使用 Business Intelligence Development Studio 图形用户界面设计数据管理应用程序的 DTS 包。DTS 包的设计、开发和调试均在 Business Intelligence Development Studio 中完成,您只需从工具栏拖动任务、为其设置属性并将任务与优先约束相连接便可完成这一切。 | • | |
使用 SQL Server Management Studio 向导开发执行常规任务(如“复制数据库”)的简单 DTS 包。 | • | |
软件供应商将在其产品中嵌入 DTS 功能,构建按需生成自定义包的向导。 | • | |
将控制流从数据流中分离出来。大多数的 DTS 包都包含多个控制流任务,以及循环任务或顺序任务,这些任务都被放置在控制流窗格中。控制任务(管道任务)是包的工作动力,它拥有自己的设计表面,可用于布置数据流。控制流和数据流的分离使得程序更加容易读取。 | • | |
包变量是经过定义且可见的。变量是受限制的,如受包、循环或任务的限制。 | • | |
复杂的 ETLM 系统可以通过构建包网络实现,其中包含一个调用其他包的包。子包可以很好地重新使用逻辑、变量和上下文。DTS 2005 与 DTS 2000 相比,对嵌套数据包的需求有所减少。 | • | |
包配置框架是可扩展的系统,可用于自定义包在不同环境中的运行方式。 | • | |
DTS 程序以 XML 格式存储在文件系统或 SQL Server 中。DTS XML 文件可受源代码管理。 | • | • |
DTS 2000 包迁移向导可以帮助您将包迁移至 DTS 2005,它还可以在出现升级问题的地方提供警告。 | • | |
DTS 2000 运行时包含在 SQL Server 2005 中,在不升级 DTS 2000 包的情况下,仍可运行。 | • | |
包的操作和结果会以多种形式被记录下来,分发给广泛的提供程序。 | • | • |
事件处理程序逻辑只需定义一次,便可多次使用。 | • | • |
与 WMI 的集成表明包可以对外部事件(例如文件复制的完成)作出响应,或抛出可供其他进程使用的 WMI 事件。 | • | • |
包可重启性与事务控制和故障检查点一起,可以帮助管理员管理复杂的包,移动大量数据。 | • |
控制流
SQL Server 2005 的 DTS 功能 | 企业 ETL 开发 | ETL 平台 | ||||||||||||
优先约束:您可以设计一个包,以在任务成功、失败或完成时将控制传递给这些不同的任务。 | • | |||||||||||||
循环任务包括 For、ForEach 和 Sequence 循环。包开发人员可以在数据的所有(或一组)表上、目录中的文件上或是 Analysis Services 多维数据集分区上轻松执行一组操作。 | • | |||||||||||||
Analysis Services 集成是无缝的,它与自动执行 Analysis Services DDL 的控制任务一起处理 Analysis Services 对象,或执行数据挖掘查询。正如下面所讨论的,DTS 管理还集成了 Analysis Services。 | • | |||||||||||||
VB.NET 脚本可与“脚本任务”一起使用。被称为“ActiveX 脚本任务”的第二个脚本任务主要用于向后兼容 DTS 2000。 | • | |||||||||||||
通信任务包括:
| • | |||||||||||||
其他控制流任务包括:
| • | |||||||||||||
其他任务可以使用 DTS 对象模型轻松开发。 | • |
数据流
SQL Server 2005 的 DTS 功能 | 企业 ETL 开发 | ETL 平台 | ||||
在数据流管道中存在多个源、转换和目的。只有在转换完成时,数据才能被读取、合并和操作,然后才能写入。中转表所需的多次写入被削弱或消除;转换性能得到极大提高。 | • | |||||
“DTS 管道”任务使用来自多个异类数据源和本机的数据。可扩展的“数据源”体系结构支持来自平面文件、OLEDB 源(包括 DB2 和 oracle)和原始文件的数据。其他源,包括使用特殊结构化数据的源都在计划之内。 | • | • | ||||
其他数据源可以由 Microsoft 及其合作伙伴轻松开发。 | • | |||||
来自多个源的数据可以与联接、查找和联合操作符相联接。这些操作都在内存中执行,不需要对数据库或文件执行写入操作。 | • | |||||
数据流可以使用条件分离和多播转换。类似编译器的 DTS 引擎确定了可以平行操作哪些数据流。 | • | |||||
大量基于行的数据转换都是由字符映射、复制映射、数据转换和派生列转换所提供的。这些操作符更像是向导,而非转换,它们提供了用户所需的大部分数据转换。 | • | |||||
有些数据转换任务需要对多个行中的数据进行比较。排序和聚合转换可以在数据流中以极高的性能执行这些操作,其性能远非数据库聚合可及。 | • | |||||
有些数据转换任务需要复杂逻辑,例如模糊匹配、模糊分组、时间维度生成以及旋转或反旋转。其他常见任务(例如维度键管理)则需要多个步骤。特殊技术和向导使这些复杂技术可供所有用户使用。 | • | |||||
转换后的数据可以写入异类目标,其中包括 SQL Server 表、OLEDB 数据库表、平面文件以及原始文件。 | • | • | ||||
转换后的数据可以与 Microsoft BI 解决方案的其他组件集成,其中包括 Analysis Services 数据库和数据挖掘模型。 | • | |||||
由转换步骤所导致的错误流可以以多种方式进行管理:
| • | • | ||||
其他转换和目的可以由 Microsoft 及其合作伙伴轻松开发。 | • |
开发和调试
SQL Server 2005 的 DTS 功能 | 企业 ETL 开发 | ETL 平台 |
包开发商可以在每个控制流任务中定义控制流断点。在调试过程中,断点可以定义在某些任务执行点之前、之后,或定义在这些任务执行点。 | • | |
包开发商可以为数据流中的每个转换附加一个数据查看器。在调试过程中,数据查看器会显示在该点的转换后数据流内容。 | • | |
Business Intelligence Development Studio 寄宿在 Visual Studio 中。脚本及其他编程任务可以充分利用该企业开发环境的优点。 | • | • |
包开发可以帮助用户将所有包组件(包括自定义脚本和可执行程序)捆绑在一起,以用于发行测试、生产或其他客户系统。 | • |
可供 DTS 2000 开发人员使用的 DTS 2005
DTS 2000 用户已经开发出了一套执行复杂操作的技巧。这些技巧,尤其是编写自修改包,在 DTS 2005 中不再有用武之地。在 DTS 2005 中要使用变量和配置基础结构来编写动态包、不要再试图编写自修改包。
配置良好的变量和配置基础结构还可以减少创建复杂子包系统的需求。如果设计完善,单一包便可满足多种需求;例如,单一包可以在多种不同配置中重复使用,以用来在维度数据仓库中加载许多维度表。在 DTS 2000 中,一个复杂的 DTS 包网络可能包括 50-100 个包;而在 DTS 2005 中,一个复杂的网络可能只包含 10 个包。