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 數據文件解析出錯的行數