在SSIS中使用脚本任务中的变量

时间:2012-11-15 23:06:56

标签: vb.net ssis

我正在使用一个SSIS包,其中一个Execute SQL Task连接到Script Task。 Execute SQL Task中的值存储在一个变量中,在Script Task中我使用以下代码来提供XML文件。

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代码以实际使用这两个变量。我试过这个但是没有用:

    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

理想情况下,我想使用两个变量,一个用于名称,一个用于路径,但是当我尝试使用一个结合两者的变量时,它不起作用。

1 个答案:

答案 0 :(得分: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变量添加到Script Task Editor脚本选项卡中的ReadOnlyVariables。)