2009-02-27 17 views
2

olarak ayarlıyorum. Daha karmaşık SQL deyimlerinde yürütüyoruz ki, sizin için SQL'i kurmak için bir önceki adımı belirleyebileceğiniz bir yer okuyoruz. Bu, SQL değişkenlerini ve global değişkenlerdeki yedekleri belirleyen bir ActiveX adımıdır.DTS, bir adım için SQL deyimini başka bir adımda

Yani SQL adım İçinde 0 SEÇ vardır ve ondan önce adım

'205 (Değiştir SourceSQLStatement) Seçenek Açık

Fonksiyon Ana() Dim oPkg aşağıdaki gibi aslında bir VB Script, 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

Ancak bunu devletler Bu adla görev bulamıyor, var. Bunu Görevler yerine Adımlara değiştirirsek bulunur ancak Adım'ın bir SourceSQLStatement özelliği yoktur.

Bu yüzden derinliğim bitti. Herhangi bir fikir?

Muhtemelen SQL'i çalıştıran adımın türünü değiştirin.

cevap

1

Kayıtlı bir yordama karmaşık TSQL deyimini değiştirmeyi denediniz mi?

Daha sonra DosyaAdı için saklı yordamında bir giriş parametresi olabilir. Bu saklı yordam, veri pompası görevinizin kaynağı olarak kullanılabilir; parametre "?" Tarafından çalışma zamanında DTS genel değişkeninin değerine atanır. bahsettiğiniz sözdizimi.

+0

Bu türden "Bu şekilde yaparsanız, karmaşıklık gider." cevaplar –