2009-02-27 69 views
2

由於我似乎無法使用?在我們正在執行的更復雜的SQL語句中,我們可以在某處讀取您可以設置上一步爲您設置SQL的位置。這是一個ActiveX步驟,用於設置步驟SQL語句和全局變量中的替代項。DTS將SQL語句設置爲另一步中的步驟

所以SQL步驟具有選擇在它0和麪前的步驟本質上是一個VB腳本如下

「205(更改SourceSQLStatement) Explicit選項

函數main() 昏暗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 

端功能

但是它指出它找不到具有此名稱的任務,它確實存在。如果我們將其更改爲任務步驟,則會發現該步驟,但該步驟沒有SourceSQLStatement屬性。

因此,我超出了我的深度。有任何想法嗎?

可能更改運行SQL的步驟的類型?

回答

1

您是否嘗試將複雜的TSQL語句更改爲存儲過程?

然後,您可以在存儲過程中爲FileName輸入參數。此存儲過程可用作數據泵任務的源,參數在運行時通過「?」指定DTS全局變量的值。你提到的語法。

+0

我喜歡這種「如果你這樣做,複雜性就會消失。」一種答案! – 2012-08-06 15:06:39