2011-05-26 88 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

相關問題