2009-02-27 7 views
2

Puisque je ne peux pas sembler utiliser? Dans les instructions SQL plus complexes que nous exécutons, nous lisons quelque part que vous pouvez définir une étape préalable pour configurer le SQL pour vous. Il s'agit d'une étape ActiveX qui définit les étapes de l'instruction SQL et les remplace dans les variables globales.DTS définir l'instruction SQL pour une étape dans une autre étape

Ainsi, l'étape SQL a SELECT 0 dans et de l'étape précédente est essentiellement un script VB comme ci-dessous

'205 (Change SourceSQLStatement) Option Explicit

Fonction principale() 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

Cependant, il affirme qu'il Impossible de trouver la tâche avec ce nom, il existe. Si nous le changeons en Steps intead de Tasks, il est trouvé mais le Step n'a pas de propriété SourceSQLStatement.

donc je suis hors de ma profondeur. Des idées?

probablement changer le type de l'étape qui exécute le SQL?

Répondre

1

Avez-vous essayé de changer la déclaration TSQL complexe à une procédure stockée?

Vous pouvez alors avoir un paramètre d'entrée dans la procédure stockée pour FileName. Cette procédure stockée peut être utilisée comme source de votre tâche de pompage de données, avec le paramètre assigné la valeur de la variable globale DTS à l'exécution par le "?" la syntaxe que vous mentionnez.

+0

J'aime ce genre de « Si vous le faites de cette façon, la complexité va. » genre de réponses! –

Questions connexes