深入分析SQL Server的数据转换服务


在使用 SQL Server  的过程中,由于经常需要从多个不同地点将数据集中起来或向多个地点复制数据,所以数据的导出,导入是极为常见的操作.我们可以使用 BCP 命令来完成这一任务,但是记住 BCP 的命令格式是一件令人头痛的苦差事,虽然你可以查看帮助文件,所以我们需要功能强大操作简单的工具来完成这一任务,数据转换服务 DTS 提供了这种支持。因此本文将介绍 DTS 的基本情况、讨论 DTS 的各个构建组件以及如何完成数据转换服务。

  数据转换服务简介

  为了支持企业决策,许多组织都需将数据集中起来进行分析。但是通常数据总是以不同的格式存储在不同的地方。有的可能是文本文件,有的虽然具有表结构但不属于同一种数据源,这些情况极大地妨碍数据的集中处理。SQL Server 为我们提供了令人欣慰的组件,即Data Transformation Services( DTS)。 DTS 本身包含多个工具并提供了接口来实现在任何支持 OLE DB 的数据源间导入、导出或传递数据,并使这一工作变得简单高效。这意味着不仅可以在SQL Server 数据源间进行数据的转储,而且可以把 Sybase, Oracle, Informix 下的数据传递到 SQL Server。

  利用 Data Transformation Services (DTS) 可能在任何 OLE DB、 ODBC 驱动程序的数据源或文本文和 SQL Server 之间导入、导出或传递数据。具体表现在: 数据的导入、导出服务
 
  通过读写数据在不同应用程序间交换数据。例如,可将文本文件或 Microsoft Access 数据库导入到 SQL Server, 也可以把数据从 SQL Server 导出到任何 OLE DB 数据源。 转换数据
 
  所谓传递是指在数据未到达目标数据源前而对数据采取的系列操作。比如 DTS 允许从源数据源的一列或多列计算出新的列值,然后将其存储在目标数据库中。

  传递数据库对象

  在异构数据源情况下 DTS, 的内置工具只能在数据源间传递表定义和数据。如果要传递其它数据库对象,如索引、约束、视图时,必须定义一个任务,从而在目标数据库上执行那些包含在任务中的 SQL 语句,SQL 语句是被用来创建这些数据库对象的。 18.1.2 DTS 结构

  DTS 将数据导入、导出或传递定义成可存储的对象,即包裹或称为包。每一个包都是包括一个或具有一定顺序的多个任务的工作流。每个任务可以将数据从某一数据源拷贝至目标数据源或使用 Active 脚本转换数据或执行 SQL 语句或运行外部程序。也可以在 SQL Server 数据源间传递数据库对象。

  包对象用来创建并存储步骤,这些步骤定义了一系列任务执行的顺序以及执行任务的必要细节。包对象中还包括源列、目标列以及有关在数据传递过程中如何操纵数据的信

  包可以存储在 DTS COM 结构的存储文件中、msdb 数据库中、或 Microsoft Repository 中。
 
  可以通过以下工具来运行包,它们是:dtsrun 工具,DTS Designer, DTS 的导入、导出向导,SQL Server Agent 来运行规划作业,使用 Execute 方法调用 DTS 包对象的 COM 应用程序。

  包是顶层对象,它包含三种底层对象:连接、任务、步骤。

  连接

  连接定义了有关源和目标数据(数据源或文件)的信息这些信息包括数据格式和位置,以及安全认证的密码。DTS 包可不包含或包含多个连接。使用连接的任务有:

  DTS Data Pump 任务执行 SQL 任务 数据驱动查询任务 定制任务;

  有三种类型的连接对象 数据源连

  数据源连接定义了有关源和目标 OLE DB 数据源的信息。这些信息包括服务器名称、数据格式和位置,以及安全认证的密码。第一个使用连接的任务负责创建该连接。如果使用 ODBC 的 OLE DB 提供者,则连接也可以定义 ODBC 数据源信息。
 
  文件连接定义了有关源和目标文件的信息。这些信息包括文件格式和位置。 Microsoft 数据连接对象
 
  Microsoft 数据连接对象或者加载数据连接文件(*.udl) 或者为 OLE DB 提供者设置数据连接文件的属性。
 
  任务
 
  每个 DTS 包都含有一个或多个任务,每个任务都是数据转换(传递)处理的工作项目。任务的种类包括: 执行 SQL 任务:即执行 SQL 语句; Data Pump 任务该任务:为 Data Pump 操作定义了源和目标数据源以及数据转换。Data Pump 从源和目标OLE DB 数据源间拷贝并转换数据; ActiveX 脚本执行:ActiveX, VB, Jscript 或Perscript 脚本。凡是脚本支持的操作都可以执行; 执行处理任务(Execute Process task): 指执行外部程序; 批量插入指执行:SQL Server 批拷贝操作; 发送邮件:使用SQL Mail 发送寻呼或邮件; 数据驱动查询:执行 OLE DB 数据源间的高级数据传递; 转换 SQL Server 对象:即从 SQL Server OLE DB 数据源向另外的同类数据源复制对象,例如表、索引、视图。

  步骤

  步骤对象定义了任务执行的顺序,以及某一任务的执行是否依赖于前一个任务的结果。如果某一任务不与步骤对象相关联,则其将无法被执行。可以为某一步骤设定运行条件,使其只在一定条件才被执行,为了提高执行的性能,也可以并行执行多个步骤。

  步骤的一个重要特性是步骤优先权约束。步骤优先权约束定义了前一步必须满足哪些条件之后才会执行当前步骤,通过步骤优先权约束可以控制任务的执行顺序。有三种类型的优先权约束:

  完成:表示前一步骤完成后就执行当前步骤,而不管其成功与否; 成功:表示前一步骤只有成功执行才执行当前步骤; 失败:表示前一步骤执行失败时才执行当前步骤。某一步骤可有多个优先权约束,只有前一步满足所有的约束后,才能执行当前步骤


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3