既然我似乎无法使用?在我们正在执行的更复杂的SQL语句中,我们在某处读取了您可以设置上一步为您设置SQL的步骤。这是一个ActiveX步骤,它设置SQL语句和替换全局变量的步骤。
因此SQL步骤中包含SELECT 0,而它之前的步骤本质上是一个VB脚本,如下所示
'205(更改SourceSQLStatement) 选项明确
功能主() Dim oPkg,oDataPump,sSQLStatement
' Build new SQL Statement
sSQLStatement = "IF (SELECT 1 FROM TABLE fm WHERE NOT EXISTS ("&_
"SELECT HighestVersionReceived "&_
"FROM FILE_CURRENT fc "&_
"WHERE fc.COL = fm.COL "&_
"AND fc.HighestVersionReceived < fm.FileVersion) "&_
"AND [FileName] = '" & DTSGlobalVariables("GLBFileName").Value & "') = 1 "&_
"SELECT 1 AS VALID "&_
"ELSE "&_
"SELECT 0 AS VALID"
' Get reference to the DataPump Task
Set oPkg = DTSGlobalVariables.Parent
Set oDataPump = oPkg.Tasks("DTSStep_DTSExecuteSQLTask_34").CustomTask
' Assign SQL Statement to Source of DataPump
oDataPump.SourceSQLStatement = sSQLStatement
' Clean Up
Set oDataPump = Nothing
Set oPkg = Nothing
Main = DTSTaskExecResult_Success
结束功能
然而它声明它找不到具有此名称的任务,它确实存在。如果我们将它更改为步骤intead of Tasks它已找到但步骤没有SourceSQLStatement属性。
所以我超出了我的深度。有什么想法吗?
可能更改运行SQL的步骤类型?
答案 0 :(得分:1)
您是否尝试将复杂的TSQL语句更改为存储过程?
然后,您可以在FileName的存储过程中有一个输入参数。此存储过程可用作数据泵任务的源,参数在运行时通过“?”分配DTS全局变量的值。你提到的语法。