2012-11-15 95 views
1

我正在使用SSIS包,並將執行SQL任務連接到腳本任務。執行SQL任務的值存儲在變量中,並在腳本任務中使用以下代碼來提供XML文件。在SSIS中的腳本任務中使用變量

Public Sub Main() 
    If My.Computer.FileSystem.FileExists("C:\SAMPLE.xml") Then 
     Dts.TaskResult = ScriptResults.Failure 
    Else 
     My.Computer.FileSystem.WriteAllText("C:\SAMPLE.xml", Dts.Variables(0).Value.ToString, False) 
     Dts.TaskResult = ScriptResults.Success 
     '' 
    End If 
End Sub  

我不想硬編碼到XML的路徑。所以我創建了兩個新變量FileName和FilePath作爲範圍。如何編輯我的VB.Net代碼實際使用這兩種variables.I試過,但沒有奏效:

Sub Main() 
    If My.Computer.FileSystem.FileExists(Dts.Variables("FileDest").Value.ToString())  Else 
     My.Computer.FileSystem.WriteAllText(Dts.Variables("FileDest").Value.ToString(), Dts.Variables(0).Value.ToString, False)Dts.TaskResult = ScriptResults.Success 
    '' 
    End If 
End Sub 

理想我想用兩個變量一個名字和一個路徑,但是,當我試圖用結合了兩者的單個變量,它不起作用。

回答

4

我懷疑你的問題的一部分是在Variables集合中使用數字索引。一旦添加了FileDest變量,就不能保證任何變量用於存儲執行SQL任務結果仍然是集合中的第零個變量。

假設與執行SQL任務變量結果被命名爲XmlQueryResults,下面應該做的伎倆:

Public Sub Main() 
    Dim filePath As String = Dts.Variables("FileDest").Value 
    Dim xmlToWrite As String = Dts.Variables("XmlQueryResults").Value 
    If My.Computer.FileSystem.FileExists(filePath) Then 
     Dts.TaskResult = ScriptResults.Failure 
    Else 
     My.Computer.FileSystem.WriteAllText(filePath, xmlToWrite, False) 
     Dts.TaskResult = ScriptResults.Success 
    End If 
End Sub 

(不要忘記將FileDest變量添加到ReadOnlyVariables在腳本任務編輯器腳本)

+0

謝謝,它工作。 – user1757018