2011-05-26 87 views
1

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

我从批处理文件发送它:

退出%输出%

和执行processTask的设置输出,但不能够进一步访问。

请帮忙。

+1

这是很难理解你的问题是什么。你必须更好地解释你的问题。你如何调用你的bat文件。退出是退出当前命令执行的命令,是你想要的吗? – 2011-05-26 09:01:59

回答

3

我觉得你应该echo变量%Output%而不是用退出命令。

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

  1. 截图#示出了在本示例中使用的批处理文件中的内容。
  2. 屏幕截图#显示执行过程任务配置。变量BatchOutput是字符串类型。
  3. 屏幕截图#显示脚本任务Success在批处理执行处理任务后添加。
  4. 在脚本任务中,我在脚本任务代码部分显示的代码显示变量的内容BatchOutput
  5. 任务的执行应显示变量的内容,该变量实际上是从批处理文件回显的文本。请参阅屏幕截图#。

脚本任务代码:(使用下面给出的代码替换主要在你的脚本任务()方法)

VB Main()方法可以在使用代码SSIS 2005 and above

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

+0

非常感谢您的帮助... 但看不到任何屏幕截图在这里... – Amruta 2011-06-02 06:13:18

+0

是的!它的工作。再次感谢你Siva。 – Amruta 2011-06-02 11:19:58

+0

我无法通过相同的代码执行另一个批处理文件... 你能找出批处理文件中的错误? 批处理文件是: @echo OFF DTEXEC/F “d:\ CHORD_LOAD_PACKAGE \ CHORD_LOAD_PACKAGE \ LOAD_SECURITY.dtsx”/ REPORTING E> d:\ Loagfile.log 如果%ERRORLEVEL%== 1套%OUTPUT%= “S” 如果%ERRORLEVEL%!= 1套%OUTPUT%= “F” 回声 “EXCEL” 出口0 – Amruta 2011-06-06 09:22:35

相关问题