在 SSIS 的脚本任务中使用变量
Posted
技术标签:
【中文标题】在 SSIS 的脚本任务中使用变量【英文标题】:Using Variables in Script Task in SSIS 【发布时间】:2012-11-15 23:06:55 【问题描述】:我正在使用带有连接到脚本任务的执行 SQL 任务的 SSIS 包。 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】:我怀疑您的部分问题是在 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。)
【讨论】:
以上是关于在 SSIS 的脚本任务中使用变量的主要内容,如果未能解决你的问题,请参考以下文章