DTS impostare l'istruzione SQL per un passo in un altro passo
-
09-09-2019 - |
Domanda
Dal momento che non riesco a utilizzare il? nelle istruzioni SQL più complesse stiamo eseguendo abbiamo letto da qualche parte che è possibile impostare un passaggio precedente per impostare il codice SQL per voi. Questo è un passo ActiveX che imposta l'istruzione SQL passi e sostituti in variabili globali.
Quindi il passo SQL ha SELEZIONA 0 in esso e il passo prima che sia essenzialmente uno script VB, come di seguito
' 205 (Change SourceSQLStatement) Option Explicit
funzione 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
End Function
Tuttavia si afferma che non riesce a trovare lavoro con questo nome, non esiste. Se cambiamo a Piazza di intead dei compiti è trovato ma il passo non ha una proprietà SourceSQLStatement.
Quindi, io sono fuori dalla mia profondità. Tutte le idee?
Probabilmente cambiare il tipo di passo che corre lo SQL?
Soluzione
Hai provato cambiando la dichiarazione TSQL complesso a una stored procedure?
Si potrebbe quindi avere un parametro di input nella stored procedure per nome del file. Questa stored procedure potrebbe essere utilizzato come fonte del vostro compito pompa di dati, con il parametro assegnato il valore della variabile globale DTS a run-time dal "?" sulla sintassi si parla.