SQL Server BI Step by Step SSIS 7 (End) - 事務,錯誤輸出,事件處理,日誌記錄
和其它程式一樣,SSIS包同樣需要健壯,穩定的運行,這樣的程式才有可靠性和延展性。SSIS提供了如下方面的支援:
1.事務: 可以對一個程式包設定成一個或者多個事務,甚至可以對兩個程式包設定成一個事務。為了 保證資料的一致性,你還可以DTC事務或者SQL Server引擎級的事務。
2.檢查點: 用來記錄一個程式包出錯時任務的運行情況,以便程式包再次啟動時,直接從發生錯誤的 任務直接執行.
3.錯誤輸出:即使再完美的程式也會有錯誤,尤其對於資料流中的任務來說,及有可能由于格式,類 型等問題,導致這一行的發生錯誤。SSIS允許針對這樣的每行進行錯誤輸出處理,你可 以進行修複或者 記錄,當然你也可以忽略。
4.優先順序條件約束:在控制流程中,你不僅可以使用一個任務的成功,失敗或執行結束作為條件來執行下面的 任務,甚至可以使用運算式來做為條件。
5.事件處理: 在SSIS包中,事件處理是和控制流程,資料流相併列的。在這裡,你可以對程式包,任務 或者容器的不同的事件進行處理,事件還可以用於設定斷點並控制日誌記錄。我們可以使用OnError事件 來捕獲錯誤.
6.日誌記錄: 可以在運行時,記錄指定的事件資訊,可以儲存在本地文本或者XML檔案中,也可以保 存到資料庫中,或者是Windows EventLog,Profiler檔案中,甚至你可以擴充自己的日誌記錄。
需求:
為了和其它系統整合,AdventureWorks系統的產品價格即時更新,需要從一個指定的URL下載一個壓 縮檔案,解壓後,對這個資料檔案進行分析匯入。由於下載的檔案是由一個非程式維護的檔案,由於人 為因素,裡面的資料格式有可能有錯誤,但是要求忽略這樣的資料。另外,如果處理失敗,需要對保留 曆史檔案。如果發生錯誤,需要發送錯誤Email.同時需要保留程式日誌,以便尋找錯誤原因。
實現:
1. 在你的D盤下面建立一個ProductPrice檔案夾來存放壓縮和資料檔案,在下面建立一個bak目錄存 儲備份檔案。
2. 建立一個SSIS包,同時建立以下變數:
| 變更名 |
類型 |
值 |
說明 |
| filePath |
String |
D:\ProductPrice\ |
資料根目錄 |
| dataPath |
String |
D:\ProductPrice\ProductList.txt |
解壓後資料檔案 |
| backPath |
String |
@[User::filePath] + "bak\\" + (DT_WSTR, 4) YEAR( GETDATE() ) + "-" + (DT_WSTR, 2) MONTH( GETDATE() ) + "-" + (DT_WSTR, 2) DAY( GETDATE() ) + ".zip" |
需要將EvaluateAsExpression設定為True 主要用於儲存未執行成功的壓縮資料檔案,其名稱為當前日期(由運算式計算出當前日 期) 比如:D:\ProductPrice\bak\2009-9-20.zip |
| WinRar |
String |
C:\Program Files\WinRAR\WinRAR.exe |
WINRAR的安裝目錄 |
| zipPath |
String |
D:\ProductPrice\Price.zip |
zip壓縮檔下載路徑 |
| erroCount |
Int32 |
0 |
資料檔案解析出錯的行數 |