我正在使用一个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
理想情况下,我想使用两个变量,一个用于名称,一个用于路径,但是当我尝试使用一个结合两者的变量时,它不起作用。
答案 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。)