将变量从批处理文件传递到SSIS包

时间:2011-05-26 08:09:30

标签: ssis batch-file

我创建了一个包,它从批处理文件中获取一个变量并将其用于执行。

我从批处理文件发送它:

退出%输出%

并设置执行进程的执行任务但无法进一步访问它。

请帮忙。!

1 个答案:

答案 0 :(得分:3)

我认为您应回显变量%Output%,而不是使用退出命令。

以下示例显示如何将字符串从批处理文件传递到SSIS:

  1. 屏幕截图# 1 显示此示例中使用的批处理文件的内容。
  2. 屏幕截图# 2 显示执行流程任务配置。变量 BatchOutput 的类型为字符串。
  3. 屏幕截图# 3 显示批量执行流程任务后添加脚本任务 Success
  4. 在“脚本任务”中,我有脚本任务代码部分下显示的代码,以显示变量 BatchOutput 的内容。
  5. 执行任务时应显示变量的内容,实际上是从批处理文件中回显的文本。参考屏幕截图# 4
  6. 脚本任务代码: (使用下面给出的代码替换脚本任务中的Main()方法)

    VB 可在 SSIS 2005 and above

    中使用的Main()方法代码
    Public Sub Main()
        Dim varCollection As Variables = Nothing    
    
        Dts.VariableDispenser.LockForRead("User::BatchOutput")
        Dts.VariableDispenser.GetVariables(varCollection)
    
        MessageBox.Show(varCollection("User::BatchOutput").Value.ToString())
    
        Dts.TaskResult = ScriptResults.Success
    End Sub
    

    C# Main()方法代码只能在 SSIS 2008 and above 中使用

    public void Main()
    {
        Variables varCollection = null;
        Dts.VariableDispenser.LockForRead("User::BatchOutput");
        Dts.VariableDispenser.GetVariables(ref varCollection);
    
        MessageBox.Show(varCollection["User::BatchOutput"].Value.ToString());
        Dts.TaskResult = (int)ScriptResults.Success;
    }
    

    希望有所帮助。

    屏幕截图#1:

    1

    屏幕截图#2:

    2

    屏幕截图#3:

    3

    屏幕截图#4:

    4