2

因为我似乎无法使用?在我们正在执行的更复杂的 SQL 语句中,我们在某处读到,您可以设置上一步来为您设置 SQL。这是一个 ActiveX 步骤,它设置步骤 SQL 语句并替换为全局变量。

所以 SQL 步骤中有 SELECT 0 ,它之前的步骤本质上是一个 VB 脚本,如下所示

' 205(更改 SourceSQLStatement)选项显式

函数 Main() 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

结束功能

但是它声明它找不到具有此名称的任务,它确实存在。如果我们将其更改为 Steps 而不是 Tasks,则可以找到它,但 Step 没有 SourceSQLStatement 属性。

所以我超出了我的深度。有任何想法吗?

可能更改运行 SQL 的步骤类型?

4

1 回答 1

1

您是否尝试过将复杂的 TSQL 语句更改为存储过程?

然后,您可以在 FileName 的存储过程中有一个输入参数。此存储过程可用作数据泵任务的源,参数在运行时由“?”分配 DTS 全局变量的值。你提到的语法。

于 2009-03-10T13:10:40.707 回答