DTS使用索引

本文介绍了DTS在SQL Server中的作用,详细阐述了如何创建和执行DTS包,包括在Enterprise Manager中运行、使用dtsrun命令行工具、通过dtsrunui界面执行以及通过VB程序调用DTS包的方法。DTS提供了COM接口,允许开发者通过编程方式灵活控制DTS包的执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     DTS(Data Transformation Services) is a set of graphical tools and programmable objects to extract transform and consolidate data from disparate sources into single or multiple destinations.

  •     what can DTS do?

            1.Access heterogeneous data sources

            2.Import,export and transform data

            3.Creat reusable data transformations and functions

            4.Automate data loads

            5.Manage metadata

            6.Customize and extend functionality

 


  •     DTS包的组成部分

            DTS包由四部分组成

       1. DTS 连接
         在进行数据转换之前,必须先打开数据源,即源连接和目的连接。DTS连接可以打开任何提供OLD DB Provider的数据库,如SQL Server、Oracle、Access等,也支持一些常用的数据库,如dbase、foxpro、excel等,还支持Unicode和ANSI 格式的文本文件。值得注意的是,DTS连接是单线程的,这就意味着同一时刻每个连接只能运行一个任务,如果要提高性能的话,可以对同一个数据源建立多个连接。

      2. DTS 任务

       在建立不同的连接后,要做的就是将这些连接关联起来,而这些所谓的关联就是从一个连接到另一个连接的通道,数据在这些通道中被加工处理,而这些加工具处理的过程就是DTS任务。一个DTS包可以建立多个任务,甚至在两个连接之间也可以建立多个不同配置的任务。

      3. DTS转换

      在DTS任务中对字段的一次处理,可以称为一个转换。也就是说,转换是发生在DTS任务中的。在DTS任务中,一般是在源连接和目的连接之间进行相应字段之间的赋值操作,更复杂的可以使用VBScript或JScript对源连接中的字段进行检验、净化等操作后,再赋给目的连接的字段。因此,也可以将 DTS转换看成是字段级的操作。

     4. DTS包工作流

     由于在DTS包中可以建立多个任务,这就有一个先执行谁,后执行谁的问题。如任务2必须在任务1执行成功后才能执行,如果任务1执行失败,则执行任务3。从这一点看,DTS包工作流有点像条件判断语句。

   


  • 建立DTS包一般有两种方法

     1. 通过导入导出向导建立

    导入导出向导可以从数据库、表或是数据转换服务等处的弹出菜单中的导入数据、导出数据中运行。在启动后,首先得选择源连接和目的连接,然后可以从简单到复杂对源连接中的表或视图进行三种选择。

    (1) 直接选择表或视图。
    (2) 通过SQL语句对表或视图进行过滤。
    (3) 复制源连接中的对象(包括索引、存储过程、约束等信息)。

    以上过程中可以通过脚本语言对每一个字段进行单独处理。
   图示如下 :
     
    



    在最后可以选择保存“DTS包选项”。DTS包可以以4种形式保存。

    (1) SQL Server(保存在SQl Server中的msdb数据库中)
    (2) SQL Server Meta Data Services
    (3) 结构化存储文件
    (4) Visual basic文件

   


   
    这种建立DTS包的方式是一种简易的方式,它只能建立一对连接,并可以将这个包以上述的4种形式保存。要想更深层次地控制包,可以使用下述的方法。

      2. 在数据转换服务中的本地包中建立

    在本地包中选择“新建包”,可以启动DTS包生成器。在左侧面板上是可供选择的连接和任务。读者可以打开上面保存的“新建包”,打开后里面只有刚才建立的两个连接和一个任务。如果想继续增加连接和任务,可以通过选择左侧的连接和任务完成。

    当DTS包中含有多个任务时,就需要建立DTS包工作流了。可以通过任务的弹出菜单中的“工作流属性”设置任务的执行先后顺序。当一个任务执行时,可以有3种选择是否执行下面的任务。

    (1) 任务成功后执行。(success workflow)
    (2) 任务失败后执行。(failure workflow)
    (3) 任务完成后,不管成功还是失败,都执行下面的任务。(completion workflow)


  • 如何调用DTS包

    一般有4种方式执行DTS包。

    1. 在Enterprise Manager中执行。

    这种方式使用得最为广泛。在导入导出向导中,如果在最后一步选中“立即执行”,就可以执行当前建立的包。在本地包中选择“执行包”,同样也可以执行保存后的包。当然,还可以使用“调度包管理”定期执行相应的包。

    2. 使用命令行工具dtsrun执行DTS包。

    dtsrun是SQL Server提供的一个用来执行保存在SQL Server中或是保存成文件的DTS包的一个工具。它的参数比较复杂,读者可以查阅相关的资料。在这里只举几个例子说明如何使用dtsrun。

    执行结构化存储文件DTS包


    
dtsrun /Ffilename /Npackage_name /Mpackage_password


      3. 使用图形界面工具dtsrunui执行DTS包。

    使用这个工具非常简单,它没有任何参数,只需在控制台中输入dtsrunui并执行后,就会出现一个操作界面,只需要按提示输入相应的信息,并选择相应的DTS包执行即可。

    4. 通过程序调用DTS包。

    由于DTS提供了COM接口,因此,可以通过它所提供的COM组件中的Execute方法来执行DTS包。
    DTS的COM组件非常复杂,在这里只给出了使用VB如何执行DTS包的程序片段以供参考。
   
    一般可分为4步设计这个程序。

    (1) 声明变量。
    在这里需要声明4个类型的变量。DTS.Package2、DTS.Step、DTS.Task和DTS.ExecutePackageTask。

    (2) 初始化变量。
    除了DTS.Package变量需要使用Set Package1 = new DTS.Package实例化外,其它的变量需要Package1实例进行初始化。

 Set Step1 = Package1.Steps.New '建立一个新步骤
    Set Task1 = Package1.Tasks.New("NewTask")  '建立一个新任务
    Set Exec1 = Task1.CustomTask
    Exec1.FileName 
= "abc.dts"  '用于执行以结构化存储的DTS包
    Exec1.Name = "ExecTask"
    Step1.TaskName 
= Exec1.Name
    Step1.Name 
= "Step1"
    Step1.ExecuteInMainThread 
= true
    Package1.Steps.Add Step1
    Package1.Tasks.Add Task1

    (3) 执行DTS包。
    只需要执行一条语句即可:Package1.Execute

    (4) 释放引用

 
  Set Exec1 = Nothing
    Set Task1 
= Nothing
    Set Step1 
= Nothing
    Package1.UnInitialize 
'调用UnInitialize方法释放包
    Set Package1 = Nothing







   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值