dts的全局变量问题:

我想在dtsrun运行时带全局变量执行,按照联机手册的说法,/A 后跟变量名:typeid=value,但不知道全局变量怎样赋值?请各位高手帮忙解决一下,解决问题立即给分
---------------------------------------------------------------

数据转换服务

在 DTS 包中使用全局变量
执行数据转换服务 (DTS) 包时,可以保存某个 DTS 步骤的数据或值,以传递到后续步骤中。例如,可以使用保存的数据更改后续步骤的执行方式,或动态修改 SELECT 语句。

在 DTS 任务中使用全局变量时,可以:

根据财务部门的财政日历,将全局变量设置为月末记帐日期。要完成该设置,可以使用 Microsoft ActiveX® 脚本任务检索值,或在设计期间将全局变量设置为月末记帐日期并在执行包期间引用。包内的步骤可以使用该日期确定名称中包含该日期的文件是否存在。如果存在,该步骤就将文件的记录插入表中。
或者,还可以在 WHERE 子句中使用全局变量,确定要装载的特定记录(例如,仅装载在该月末日期修改的记录)。

可以使用执行 SQL 任务一次在数据中填充多个全局变量。所有行集也可以保存在一个全局变量中,作为断开的 ActiveX 数据对象 (ADO) 记录集访问。有关更多信息,请参见执行 SQL 任务。
然后,可以将该全局变量作为内存中查找表使用。使用执行 SQL 任务,对 state 表发出 SELECT 语句,并将结果存储在一个全局变量中。然后,使用转换数据任务,对每一个源行调用 "StateLookup" 函数,通过全局变量记录集反复使用,并且将源字段中的州代码与表中的州代码匹配。如果有匹配的州,则将该州的全名存储在目的列中。有关更多信息,请参见查找查询。

创建全局变量
可以在 DTS 中创建全局变量,并通过以下方法为这些变量指派值:

在设计时通过使用:
DTS 设计器中的"DTS 包属性"对话框。

"执行 SQL 属性"对话框。有关更多信息,请参见执行 SQL 任务属性。
在包执行时动态地指派,方法是:
使用 ActiveX 脚本。

从命令提示中发出 dtsrun 命令提示实用工具并使用 /A 命令开关以便分配和初始化全局变量。
全局变量的作用域
作用域是指在内存中变量引用的生存周期。作用域取决于声明或初始化变量的位置。全局变量在执行包之后是否仍然可以访问将取决于创建全局变量的方式。

设计时创建的全局变量保留执行完包时的值(如果保存了包)。例如,假设创建了全局变量"city"并将其值设置为"Boston"。在执行包的过程中,ActiveX 脚本将该值由"Boston"改为"Philadelphia"。在下一次执行该包时,全局变量的值为"Philadelphia"而非"Boston"。如果需要查询在执行某个包后该包全局变量的值,这种方法非常有用。

然而,在 ActiveX 脚本中动态创建的全局变量有两种作用域。如果在 Function Main() 上面创建,则可以用于该脚本中的所有函数。该作用域等价于模块级的作用域。如果在某个函数内部进行了声明,则只能在该函数内部使用。该作用域等价于过程级的作用域。

在 DTS 包中使用全局变量的示例
下面的示例表明如何使用 ActiveX 脚本在 DTS 包中创建、设置、检索和使用全局变量的值。

通过 ActiveX 脚本动态地创建全局变量
如果某个全局变量在运行包时不存在,可以使用 ActiveX 脚本动态地创建一个。要创建一个名为"city"的新全局变量,并为其指派值"Boston",可以使用以下 Microsoft Visual Basic® Scripting Edition (VBScript) 代码:

DTSGlobalVariables("city").value = "Boston"

可以在 ActiveX 脚本中动态地创建 COM 对象,并将其存储在全局变量中。下面示例中的 VBScript 代码用来创建 ADO 连接,包中的脚本可以使用该连接执行 SQL 命令并检查 ADO 记录集。在下面的示例中,将创建一个 year-to-date 销售表,其中包含 pubs 数据库中的 Totals 字段:

Function Main()
dim conn
set DTSGlobalVariables("MyConn").value = CreateObject("ADODB.Connection")

set conn = DTSGlobalVariables("MyConn").value
conn.provider="sqloledb"
conn.open "(local)", "sa", ""
conn.DefaultDatabase = "pubs"
conn.execute("Create Table YTDSales (Totals int)")
Main = DTSTaskExecResult_Success
End Function

下面的代码示例表明如何使用 Microsoft JScript® 创建 year-to-date 的 sales 表:

function Main()
{
DTSGlobalVariables("MyConn").value = CreateObject("ADODB.Connection");
conn = DTSGlobalVariables("MyConn").value;

conn.open = ("provider = sqloledb; data source = (local);user id = sa");
conn.DefaultDatabase = "pubs";
conn.execute("Create Table YTDSales (Totals int)");

return(DTSTaskExecResult_Success)
}

通过 ActiveX 脚本动态地设置全局变量的值
下面的 ActiveX 脚本代码(使用 VBScript 编写)将名为 count 的全局变量的值设置为 200:

DTSGlobalVariables("count").value = 200

通过 ActiveX 脚本动态地获得全局变量
下面的 ActiveX 脚本代码用 VBScript 编写,获取的全局变量值名为 count,该值保存在名为 globalCount 的变量中:

globalCount = DTSGlobalVariables("count").value

通过 ActiveX 脚本动态地使用全局变量
下面的代码将包含文件名的列的值与包含 Julian 日期的全局变量串联在一起,并将新的结果存储在目的表中的文件名列:

DTSDestination("FileName") = DTSSource("FileName") & DTSGlobalVariable("julianDate").value

请参见

添加 DTS 查找和全局变量

dtsrun 实用工具

©1988-2000 Microsoft Corporation。保留所有权利。

---------------------------------------------------------------

dtsrun /F"e:\web\wwwroot\sunhing\sqlserver\toolsdepart.dts" /Ntoolsdepart
dtsrun /F"e:\web\wwwroot\sunhing\sqlserver\toolsinfor.dts" /Ntoolsinfor

Published At
Categories with 数据库类
comments powered by Disqus