2017-02-20 61 views
0

我正在使用BIML創建SSIS包,並且包的一個部分處理髮生的錯誤。我正在使用執行SQL任務,該任務調用存儲過程來記錄數據庫中的錯誤詳細信息,存儲過程需要參數@Comments,其中包含錯誤描述信息和一些其他自定義信息。如何在表達式構建器中使用System :: ErrorDescription系統變量

我試圖創建一個變量ERROR_DETAILS和使用表達式構建價值@Comments PARAM。

<Parameters> 
    <Parameter Name="ParentPkgID" DataType="Int32">0</Parameter> 
</Parameters> 

<Variables> 
    <Variable Name="TableName" DataType="String"> 
     tblEmployee 
    </Variable> 
    <Variable Name="Error_Details" DataType="String" EvaluateAsExpression="true"> 
     &quot;Package execution failed, Error details :: &quot; + @[System::ErrorDescription] 
    </Variable> 
</Variables> 

的問題是包創建失敗,當我用上面的代碼來創建變量,我理解系統:ErrorDescription中是不是在表達式生成器可用,但什麼是我選擇這裏。

如何使用一些僅在BIML代碼中某些特定上下文中可用的系統變量。

非常感謝您看我的問題。請提出解決方案。

回答

5

這是由於SSIS的限制,如果您嘗試在上面使用上述表達式,則SSDT設計器會給您類似的錯誤。

SSIS只在某些事件處理程序類型(如OnError)的上下文中使System :: ErrorDescription和System :: ErrorCode變量可用。

您可以重新安排您的包以在ExecuteSQL任務上創建事件處理程序,獲取其中的錯誤描述,然後使用事件處理程序中的存儲過程調用來處理它。這裏是一些最小的示例代碼,將按預期構建:

<Biml xmlns="http://schemas.varigence.com/biml.xsd"> 
    <Packages> 
     <Package Name="Package1"> 
      <Tasks> 
       <Dataflow Name="DataflowTask1"> 
        <Events> 
         <Event Name="OnError" EventType="OnError"> 
          <Variables> 
           <Variable Name="Error_Details" DataType="String" EvaluateAsExpression="true">&quot;Package execution failed, Error details :: &quot; + @[System::ErrorDescription] </Variable> 
          </Variables> 
         </Event> 
        </Events> 
       </Dataflow> 
      </Tasks> 
     </Package> 
    </Packages> 
</Biml> 
+0

謝謝斯科特非常有幫助。最後,我在事件處理程序中創建了一個表達式任務,將所需的值分配給變量Error_Details。 –

相關問題