在 DTS 包中使用全局变量
执行数据转换服务 (DTS) 包时,可以保存某个 DTS 步骤的数据或值,以传递到后续步骤中。例如,可以使用保存的数据更改后续步骤的执行方式,或动态修改 SELECT 语句。 在 DTS 任务中使用全局变量时,可以: 根据财务部门的财政日历,将全局变量设置为月末记帐日期。要完成该设置,可以使用 Microsoft ActiveX® 脚本任务检索值,或在设计期间将全局变量设置为月末记帐日期并在执行包期间引用。包内的步骤可以使用该日期确定名称中包含该日期的文件是否存在。如果存在,该步骤就将文件的记录插入表中。 
或者,还可以在 WHERE 子句中使用全局变量,确定要装载的特定记录(例如,仅装载在该月末日期修改的记录)。 可以使用执行 SQL 任务一次在数据中填充多个全局变量。所有行集也可以保存在一个全局变量中,作为断开的 ActiveX 数据对象 (ADO) 记录集访问。有关更多信息,请参见执行 SQL 任务。 
然后,可以将该全局变量作为内存中查找表使用。使用执行 SQL 任务,对 state 表发出 SELECT 语句,并将结果存储在一个全局变量中。然后,使用转换数据任务,对每一个源行调用 "StateLookup" 函数,通过全局变量记录集反复使用,并且将源字段中的州代码与表中的州代码匹配。如果有匹配的州,则将该州的全名存储在目的列中。有关更多信息,请参见查找查询。创建全局变量
可以在 DTS 中创建全局变量,并通过以下方法为这些变量指派值: 在设计时通过使用: 
DTS 设计器中的"DTS 包属性"对话框。 
"执行 SQL 属性"对话框。有关更多信息,请参见执行 SQL 任务属性。 
在包执行时动态地指派,方法是: 
使用 ActiveX 脚本。
从命令提示中发出 dtsrun 命令提示实用工具并使用 /A 命令开关以便分配和初始化全局变量。

解决方案 »

  1.   

    可以在儲存過程理xp_cmdshell" dtsrun....."dtsrun 实用工具执行用数据转换服务 (DTS) 创建的包。DTS 包可存储在 Microsoft® SQL Server™ 2000 msdb 数据库、COM 结构化存储文件或 SQL Server Meta Data Services 中。语法
    dtsrun 
    [/?]|
    [
        [
            /[~]S server_name[\instance_name]
            { {/[~]U user_name [/[~]P password]} | /E }
        ]
        {    
            {/[~]N package_name }
            | {/[~]G package_guid_string}
            | {/[~]V package_version_guid_string}
        }
        [/[~]M package_password]
        [/[~]F filename]
        [/[~]R repository_database_name]
        [/A global_variable_name:typeid=value]
        [/L log_file_name]
        [/W NT_event_log_completion_status]
        [/Z] [/!X] [/!D] [/!Y] [/!C]
    ]/A global_variable_name:typeid=value指定一个包全局变量,其中 typeid = 全局变量数据类型的类型标识符。可以引用整个参数字符串。该参数可重复使用以指定多个全局变量。有关全局变量的各种可用类型标识符的信息,请参见注释部分。若要使用该命令开关设置全局变量,必须有包的所有者权限或者该包必须已在未启用 DTS 密码保护的状态保存。如果没有所有者权限,可以指定全局变量,但是所用的值将是设置在包中的值,而不是那些用 /A 命令开关指定的值。