我将数据从Postgres移动到SQL Server。在SSIS 2008 R2中,我有一个脚本任务,它从文本文件中读取并将文本文件的内容分配给包变量。此变量将用于限制源SQL定义中的4000个字符表达式限制,因为我的SQL语句非常长。当我通过MsgBox
检查变量的值时,我发现该变量实际上是从平面文件中填充的。
Public Sub Main()
'
Dim strFileName As String, strPathParent As String, strFullPath As String, SourceSQL As String
Dim objFSO As Object, objFile As Object
Dim SQLSourceVariable As String
Const ForReading = 1
objFSO = CreateObject("Scripting.FileSystemObject")
strPathParent = "C:\Users\SourceSQL\"
strFileName = "source.sql"
strFullPath = strPathParent & strFileName
objFile = objFSO.OpenTextFile(strFullPath, ForReading)
SourceSQL = objFile.ReadAll.ToString()
'MsgBox(SourceSQL)
'
Dts.Variables("User::SourceSQL").Value = SourceSQL
objFile.Close()
'MsgBox(Dts.Variables("User::SourceSQL").Value)
Dts.TaskResult = ScriptResults.Success
End Sub
但是,当我进入数据流任务的表达式并将所谓填充的变量@[User::SourceSQL]
分配给属性[ADO NET Source].[SqlCommand]
并运行包时,我得到一个"数据库损坏的错误&# 34;因为变量似乎是空白的。基本上,它试图将空白变量作为源推入数据流任务并失败。
如何在脚本任务中填充变量并在进入数据流任务时不填充该变量?