为什么通过变量从文件动态分配SQL源失败?

时间:2014-11-13 20:18:21

标签: sql-server vb.net dynamic ssis sql-server-2008-r2

我将数据从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;因为变量似乎是空白的。基本上,它试图将空白变量作为源推入数据流任务并失败。

如何在脚本任务中填充变量并在进入数据流任务时不填充该变量?

0 个答案:

没有答案