改善系统性能或对现有系统进行升级,经常必须将数据从一个数据存储位
置移动到另一个存储位置。
可以从不同的源将数据抽取、转换和合并到一个或多个目标位置。借助于
DTS工具,您可以创建适合于您的组织特定需要的自定义移动解决方案,
如以下方案所示:
程序,如 Microsoft Access.该应用程序的新版本要求 SQL Server 2000,
因此需要您更改数据库架构并转换某些数据类型。
库对象从原数据源复制到 SQL Server 2000数据库中,同时重新映射列并
更改数据类型。可以使用 DTS工具运行此解决方案,或者将该解决方案嵌
入您的应用程序。
数据库。几个部门会在月末创建这些电子表格,但是并没有设定完成所有
电子表格的时间。
列时运行该解决方案。此消息触发 DTS从电子表格抽取数据,执行所有定
义的转换然后将数据加载到 SQL Server 数据库中。
Server 2000 分析服务来汇总数据。而该数据仓库每晚需要从联机事务处
理(OLTP)数据库进行更新。OLTP系统每天 24 小时都在运行,所以性能
至关重要。
数据文件移动到本地驱动器,将数据加载到一个实际的表中,然后使用分
析服务对数据进行合计。可以安排每晚运行 DTS解决方案,还可以使用新
的 DTS记录选项来跟踪该进程的进行时间,从而可以分析不同时间段内的
性能。
Microsoft Excel 或 Microsoft Access )间导入、导出和转换各种数据。
通过 OLE DB (一种数据访问的开放式标准)提供连接,通过用于 ODBC
的 OLE DB 提供程序来支持 ODBC (开放式数据库连接)数据源。
组已安排好的任务,它们定义要执行的工作、对数据和对象的转换、定义
任务执行的工作流约束条件以及数据源和目标间的连接方式。DTS 软件包
还提供一些服务,如记录软件包执行详细情况、控制事务和处理全局变量。
●导入/导出向导用于生成相对简单的 DTS 软件包,并支持数据移植和简
单转换。
●DTS设计器以图形方式来实现 DTS 对象模型,可用于创建具有一系列功
能的 DTS 软件包。
●DTSRun 是用于执行现有 DTS 软件包的命令提示实用程序。
●DTSRunUI 是 DTSRun 的图形界面,可以传递全局变量以及生成命令行。
●SQLAgent 不是 DTS 应用程序,DTS 将其用于安排软件包的执行。
任务和自定义转换。
●新的 DTS 任务包括 FTP 任务、执行软件包任务、动态属性任务和信息
队列任务。
●增强的记录功能可以保存每个软件包的执行信息,从而为您保留一个完
整的执行历史记录,并可以查看每一任务的每个进程的信息。可以生成
异常情况文件,文件中包含因错误而无法处理的数据行。
●您可以将 DTS 软件包另存为 Microsoft Visual Basic? 文件。
●新的多阶段数据泵允许高级用户自定义不同阶段的数据转换操作。还可
以将全局变量用作查询的输入参数。
●您可以在 DTS 转换任务和执行 SQL 任务时使用参数化源查询。
●可以使用执行软件包任务将全局变量的值从父软件包动态分配到子软件
包。
DTS 软件包。您可以使用 DTS设计器执行以下任务:
●创建包含一个或多个步骤的的简单软件包。
●创建包括复杂工作流的软件包,这些工作流包括多个步骤,而这些步骤
使用条件逻辑、事件驱动代码或与数据源的多种连接。
●编辑现有软件包。
DTS 设计器界面包括一个工作区(用于生成软件包)、几个工具栏
(其中包含可拖动到设计工作表上的软件包元素)以及几个菜单(其中包
含工作流和软件包管理命令)。
可以方便地使用 DTS设计器来生成功能强大的 DTS软件包。以下各部分将
对任务、工作流、连接和转换进行定义,并阐释使用 DTS设计器实施 DTS
解决方案的方便性。
包执行期间可能要执行的工作项。可以使用这些任务进行以下操作:
● 转换数据
转换数据任务 用于在源和目标间移动数据,可以选择对数据应用列一级的转换。
数据驱动的查询任务 用于对数据执行灵活的基于 SQL 事务的操作,包括存储过程和 INSERT、UPDATE 或 DELETE 语句。
并行数据泵任务1 只可按编程方式使用,并行数据泵任务执行的功能与转换数据和数据驱动的查询任务相同,但它支持 OLE DB 2.5 或更高版本所定义的分层次的行集合。
● 复制和管理数据
批量插入任务 用于快速将大量数据加载到 SQL Server 表或视图中。
执行 SQL 任务 用于在软件包执行期间运行 SQL 语句。执行 SQL 任务还可以保存作为查询结果的数据。
复制 SQL Server 对象任务 用于将 SQL Server 对象从一个 SQL Server 或其实例复制到另一个 SOL Server 或实例。可以复制对象(如:数据和表)以及对象(如:视图和存储过程)的定义。
传输数据库任务1 用于将 SQL Server 数据库从 SQL Server 7.0 版本或 SQL Server 2000 的一个实例移动或复制到 SQL Server 2000 的一个实例中。
传输错误消息任务1 用于将针对用户的错误消息(通过 sp_addmessage 系统存储过程创建)从 SQL Server 7.0 或 SQL Server 2000 的一个实例复制到 SQL Server 2000 的一个实例中。
传输登录任务 1 用于将登录信息从 SQL Server 7.0 或 SQL Server 2000 的一个实例复制到 SQL Server 2000 的一个实例中。
传输作业任务1 用于将作业从 SQL Server 7.0 或 SQL Server 2000 的一个实例复制到 SQL Server 2000 的一个实例中。
传输主存储过程任务 1 用于将存储过程从 SQL Server 7.0 或 SQL Server 2000 的一个实例的主数据库复制到 SQL Server 2000 的一个实例的主数据库。
● 将任务作为软件包中的作业运行
ActiveX 脚本任务 用于编写代码以执行在其它 DTS 任务中无法执行的功能。
动态属性任务1 用于在软件包运行时从 DTS 软件包以外的源检索值,并将这些值分配给选定的软件包属性。
执行软件包任务1 用于运行软件包内其它的 DTS 软件包。
执行进程任务 用于运行可执行程序或批处理文件。
文件传输协议 (FTP) 任务1 用于从远程服务器或 Internet 下载数据文件。
消息队列任务1 用于从 Microsoft 消息队列发送和接收消息。
发送邮件任务 用于发送电子邮件消息。
分析服务处理任务2 用于对 SQL Server 2000 分析服务中定义的一个或多个对象执行处理。
数据挖掘任务1,2 用于从 SQL Server 2000 分析服务中定义的数据挖掘模式对象中创建谓词查询或输出表。
2 只在安装了 SQL Server 2000 分析服务的前提下可用。
令将其集成到 DTS设计器中。
括两项任务: Microsoft ActiveX?脚本任务以及发送邮件任务:
图 2. 具有两项任务的 DTS 软件包
Basic Scripting Edition(VBScript)、Microsoft JScriptActiveState
ActivePerl。这些搜索引擎可以从 [url]http://www.activestate.com[/url] 下载。
发送邮件任务可以发送消息,指示软件包已运行。请注意,这些任务尚未
排序。执行软件包时,ActiveX 脚本任务和发送邮件任务将同时运行。
任务将成为进程中的一个步骤。在 DTS设计器中,在 DTS设计器工作表上
操作任务,并使用优先级约束条件来控制执行任务的顺序。
可以使用的优先级约束条件类型。
(蓝色箭头)
如果希望在任务 1 完成前不执行任务 2,而不考虑执行结果如何,则应使用“按完成顺序”优先级约束条件链接任务 1 和任务 2。
(绿色箭头)
如果希望在任务 1 成功完成前不执行任务 2,应使用“按成功情况”优先级约束条件链接任务 1 和任务 2。
(红色箭头)
如果希望只在任务 1 无法成功执行的情况下才执行任务 2,应使用“按失败情况”优先级约束条件链接任务 1 和任务 2。
发送邮件任务。当 Active X 脚本任务完成后,无论成功或失败,都将运
行发送邮件任务。
图 3. 使用“按完成顺序”优先级约束条件的 ActiveX 脚本任务和发送邮件任务
件,一个配置为使用“按失败情况”约束条件。两个发送邮件任务可根据
ActiveX 脚本成功还是失败发送不同的消息。
图 4. 邮件任务
“管理通知”可以在脚本 #1 采用“按成功情况”约束条件,在脚本 #2
采用“按失败情况”约束条件。在这些情况下,DTS 假设存在逻辑关系
“AND ”。因此,只有在脚本 #1 成功执行而脚本 #2 失败的情况下,才
会发送“管理通知”消息。
图 5.示例:对一项任务采用多个优先级约束条件
目标数据以及所有其它数据源(如查找表)建立有效连接。
表选择连接类型,可对连接进行配置。可用的连接类型包括:
用于 SQL Server 的 Microsoft OLE DB 提供程序
Microsoft 数据链接
用于 Oracle 的 Microsoft ODBC 驱动程序
dBase 5
Microsoft Access
HTML 文件(源)
Microsoft Excel 97-2000
Paradox 5.X
文本文件(源)
文本文件(目标)
其它连接
DTS 允许您使用任何 OLE DB 连接。使用“连接”工具栏上的图标可
以便捷地访问常用的各种连接。
连接)复制到 SQL Server 产品数据库(目标连接)。
图 6. 示例:使用两种连接的软件包
表已经存在。如果存在,将删除它然后重新创建。成功完成执行 SQL任务
后,第二个步骤是将数据复制到 SQL Server 数据库。如果复制操作失败,
第三个步骤是发送一份电子邮件。
在执行数据转换、数据驱动查询和并行数据泵任务期间将使用数据泵。执
行这些任务的过程是:在源和目标连接上创建行集合,然后创建数据泵实
例在源和目标间移动这些行。在复制每一行时,将进行转换操作。
Production DB任务之间进行。转换数据任务用连接间的灰色箭头表示。
持参数化查询,参数化查询允许在执行查询时定义查询值。
询设计器,它是一个用图形化方式生成 DTS任务查询的工具。下图中,使
用查询设计器来生成一个查询,该查询联接 pubs 数据库中的三个表。
图 8. 数据转换服务查询设计器界面
的内置转换。
复制列 用于在不应用任何转换的情况下将数据直接从源列复制到目标列。
ActiveX 脚本 用于生成自定义转换。请注意,因为转换将逐行进行,ActiveX 脚本可能影响 DTS 软件包的执行速度。
DateTime 字符串 用于将源列中的日期或时间转换为目标列中的另一种格式。
小写字符串 用于将源列转换为小写字符形式,如需要,将其转换为目标数据类型。
大写字符串 用于将源列转换为全大写字符形式,如需要,将其转换为目标数据类型。
中间字符串 用于从源列抽取子字符串,对其进行转换后将结果复制到目标列。
修剪字符串 用于删除源列中字符串的前导空格、尾随空格和嵌入空格,然后将结果复制到目标列。
读取文件 用于打开文件内容(文件名称在源列中指定),然后将内容复制到目标列。
写入文件 用于将源列(数据列)的内容复制到一个文件中,该文件的路径由第二个源列(文件名列)指定。
方式是使用活动模板库(ATL )自定义转换模板,SQL Server 2000 DTS
样本程序中包括该模板。
种异常情况记录文件来记录软件包执行期间的情况:错误文本文件、源错
误行文件和目标错误行文件。
●一般错误信息将写入错误文本文件中。
●如果转换失败,源行出现错误,该行将写入源错误行文件。
●如果插入失败,目标行出现错误,该行将写入目标错误行文件。
己的日志文件。
的情况下,在转换数据任务、数据驱动查询任务和并行数据泵任务中映射
列一级的转换时配置的。
企业管理器中选择多阶段数据泵选项,在数据泵操作过程中的不同阶段都
可以访问数据泵并添加功能。
进行操作。
图 9. 数据泵进程
段,可以执行以下操作:
●为每个要自定义的数据泵阶段编写一个 ActiveX 脚本阶段函数。如果
使用 ActiveX 脚本函数来自定义数据泵阶段,不需要该软件包以外的
其它任何代码。
●使用 Microsoft Visual C++? 创建 COM 对象来自定义所选的数据泵阶
段。在该软件包之外开发此程序,在执行转换过程中每个所选的阶段时
将调用该程序。访问数据泵阶段的 ActiveX 脚本方法中每个所选阶段
都使用不同的函数和输入点;而这种方法则不同,它在数据泵任务执行
期间提供一个单一输入点,该输入点将被多个数据泵阶段调用。
●Microsoft SQL Server
如果要将软件包存储到网络中 SQL Server 的任意实例上,该选项将
DTS 软件包保存到 Microsoft SQL Server ,保留一个便于使用的这些软
件包的清单,并在软件包开发进程中添加和删除软件包版本。
如果准备跟踪软件包版本、元数据和数据系列信息,该选项将 DTS软
件包保存到元数据服务。
如希望在网络间复制、移动和发送软件包而不必将其存储在Microsoft
SQL Server数据库中,该选项将 DTS软件包保存到结构化存储文件。
如果要将 DTS软件包合并到 Visual Basic 程序中或将其用作 DTS应
用程序开发的原型,该选项将通过 DTS设计器或 DTS导入/ 导出向导所创
建的 DTS软件包保存到 Microsoft Visual Basic 文件。
方式访问 DTS对象模型的功能,DTS 扩展了可用的解决方案的数目。使用
Microsoft Visual Basic、Microsoft Visual C++或任何其它支持 COM的
应用程序开发系统,都可以使用图形化工具所不支持的功能开发出适合于
您的环境的自定义 DTS解决方案。
●生成软件包
无需使用 DTS设计器或 DTS导入/ 导出向导,您就可以开发极为复杂
的软件包,并可访问对象模型中的全套功能。
通过构建自定义任务和转换,可以添加一些适用于您的业务并可在 DTS
内重复使用的新功能。
并非一定要使用所提供的工具来执行 DTS软件包,可以用编程方式执
行DTS软件包并通过 COM事件显示进度,并允许构建嵌入的或自定义的DTS
执行环境。
2000一起安装。
参阅 SQL Server 2000光盘上的 Redist.txt。