一次SSIS Package的除錯經歷

2022-02-18 09:34:59 字數 2045 閱讀 4820

ssis package的除錯有時是乙個非常艱難的過程,由於ssis 編譯器給出的錯誤資訊,可能並不完善,需要程式設計師根據錯誤資訊抽絲撥繭,尋找錯誤的根源,進而解決問題。

第一部分:ssis提供的除錯工具

1,ssis package的 control flow 通過醒目的圖示顯示task的執**況

在執行package的時候,如果乙個task上顯示綠色的勾,表示task執行正常,如果顯示的是紅色的x,表示task執行異常。

通常ssis package除錯的第一步就是尋找出錯的task,然後進入該task的data flow中檢視報錯的component。

在task上顯示錯誤資訊,進入該task,發現excel source沒有指定connection manager。

2,在package執行時,會出現乙個progress顯示執行的進度

如果錯誤,會在progress中顯示錯誤的資訊

3,data viewer 檢視從上游元件傳遞的資料

通過 點選藍色的資料流線,enable data viewer來檢視資料。

4,設定breakpoint

選中task,點選右鍵,選中edit breakpoint來設定斷點,進行除錯

5,package 事件,可以在事件中寫入特殊的**,當錯誤出現時,傳送runtime的錯誤資訊或將錯誤資訊寫入文件,方便程式設計師捕捉錯誤資訊,提高debug的效率。

6,以上5種都是非常方便的除錯工具,當然ssis提供的輔助除錯工具也有很多,各有用途,如果使用得當,將會使debug更有效率。

第二部分:示例

在使用scripte componet的乙個package,出現乙個錯誤資訊 「object reference not set to an instance of an object」

說明在 scripte componet的c#**中,並沒有將物件設定為乙個有效的例項。

datatable dt;

public

override

void

preexecute()

從preexecute函式中,可以看出,最有可能的錯誤原因是 cnmanager 並沒有獲取到package的connection manager

idtsconnectionmanager100 cnmanager = connections.connection;

檢視script component的connection managers選項卡,已經設定了connection manager,那麼錯誤的原因可能就是name=connection的connection manager的鏈結字串有錯誤,導致無法連線到db。

經驗證,最終的結果跟推測一樣,connection manager的鏈結字串有錯誤,無法連線到db,導致script component執行失敗。 

記一次uwsgi django nginx 調優

uwsgi project fortune cat uid ubuntu gid ubuntu path fortune cat base home uid chdir base path project master true thunder lock true processes 2 cheap...

一次redis調優的過程

記錄一次redis調優的過程,這次事故主要是測試組人員那邊 在給我們測試的時候發現的,有個介面返回資料特別慢,之後我們就去排查問題,結果就發現了是 redis的延遲問題。那究竟是怎麼回事呢?請看下面 介面返回特別慢,檢視了伺服器列印的日誌,發現是redis的問題 根據日誌的提示,找到 中用到redi...

一次oracle調優經歷

修改oracle archive mode需要注意的地方 當時沒有記錄下具體的東西。現在寫一下 我的測試機經常死。win2k oracle 92 1 檢視alert sid.log 日誌。沒發現問題。2 為資料庫做statspace,峰值大約在早10點和下午3點左右。做了兩個statspace。看,...