2012-01-09 79 views
1

有沒有辦法在sql server 2008 ssis包內自動記錄傳遞給存儲過程和/或命令的參數? 我試圖從鏈接到全局OnError事件的腳本任務訪問這些信息,但它似乎不是對當前的sql命令的引用,有沒有一種通用的方法來做到這一點?或者我必須實現自定義日誌記錄每個sql命令i'im射擊?SSIS Sql參數日誌記錄

在此先感謝

+0

我不知道的是關聯到'執行SQL'任務,可以自動處理這個問題,但是這並不是說有沒有捕獲此信息的機制事情。你能提供更多的信息嗎?參數的值是通過表達式分配還是通過表達式計算? – billinkc 2012-01-09 16:08:48

回答

0

這可能是有幫助的,我有一些在我的項目之一定義Execute Process Tasks。每個容器都有自己的一組輸入和輸出,我想要記錄,所以我的方法是添加一個OnPostExecute事件與一個腳本任務相關聯。我在那裏解僱了信息事件以記錄在該任務中發生的事情的細節。這顯然假定你已經選擇了OnInformation事件來記錄。

 try 
     { 
      //User::ExecuteArgs,User::ExecuteError,User::ExecuteOutput 
      string args = Dts.Variables["ExecuteArgs"].Value.ToString(); 
      string output = Dts.Variables["ExecuteOutput"].Value.ToString(); 
      string error = Dts.Variables["ExecuteError"].Value.ToString(); 
      bool fireAgain = false; 
      if (!string.IsNullOrEmpty(output)) 
      { 
       Dts.Events.FireInformation(0, "Post execute output", string.Format("Output: {0}", output), string.Empty, 0, ref fireAgain); 
      } 

      if (!string.IsNullOrEmpty(error)) 
      { 
       Dts.Events.FireWarning(0, "Post execute error", string.Format("Error: {0}", error), string.Empty, 0); 
      } 

      if (!string.IsNullOrEmpty(args)) 
      { 
       Dts.Events.FireInformation(0, "Post execute args", string.Format("Args: {0}", args), string.Empty, 0, ref fireAgain); 
      } 

     } 
     catch (Exception ex) 
     { 
      this.Dts.Events.FireWarning(0, "Post package execution", string.Format("Trouble accessing variables {0}", ex.ToString()), string.Empty, 0); 

     }