使用記錄,可以擷取有關封裝的執行階段資訊,藉此幫助您在每次執行封裝時對其進行稽核和疑難排解。
例如,記錄可以擷取執行封裝之操作員的名稱,以及封裝開始和結束的時間。
在使用記錄提供者的文字檔,依據預設值是一個固定的檔案名稱。
但在某些環境下,若希望能夠自定其檔案名稱,會是更加彈性的作法。
實作練習
目標:
設定封裝執行「記錄(Logging)」的文字檔,其檔名能夠依據系統時間自動變更。
實作步驟:
工作1:設定封裝的「記錄(Logging)」
步驟01. 在封裝內,點選「控制流程」。
步驟02. 在上方的工具選單,選擇「SSIS」\「記錄」。
步驟03. 在「設定記錄」視窗,點選「提供者與記錄」頁籤。
步驟04. 在「加入新記錄」區域,在「提供者類型」方塊,下拉選取「文字檔的 SSIS 記錄提供者」。
再點選「加入」。
步驟05. 在「選取用於容器的記錄」區域,在「名稱」方塊,勾選「文字檔的 SSIS 記錄提供者」。
步驟06. 在「組態」方塊,點選下拉,選擇「新增連接」。
步驟07. 在「檔案連接管理員編輯器」視窗, 在「使用類型」方塊,下拉選擇「建立檔案」。
步驟08. 在「方塊」,點選「瀏覽」,設定要此記錄檔案要存放的路徑與完整檔名。
步驟09. 點選「確定」,關閉「檔案連接管理員編輯器」視窗。
工作2:設定文字檔的連線字串
步驟01. 在下方的「連接管理員」,點選先前所建立的連接,滑鼠右鍵,選擇「屬性」。
步驟02. 在此連接的「屬性」視窗, 點選「Expressions」的...圖示。
請參考下圖所示:
步驟03. 在「屬性運算式編輯器」視窗,在「屬性」區域,下拉選取「ConnectionString」。
請參考下圖所示:
步驟04. 在「屬性」區域,點選...圖示。
步驟05. 在「運算式產生器」視窗,在中間的「運算式」區域,輸入以下的範例程式碼。
請參考下圖所示:
--EX1. 完整檔案名稱的範例:C:\myAdmin\2010070315312540.log -- 精確度到年、月、日、小時、分、秒、0.01 秒。 "C:\\myAdmin\\"+ SUBSTRING( (DT_WSTR,30) GETDATE(),1, 4 )+SUBSTRING( (DT_WSTR,30) GETDATE(),6, 2 )+SUBSTRING( (DT_WSTR,30) GETDATE(),9, 2 )+ SUBSTRING( (DT_WSTR,30) GETDATE(),12, 2 )+SUBSTRING( (DT_WSTR,30) GETDATE(),15, 2 )+SUBSTRING( (DT_WSTR,30) GETDATE(),18, 2 )+SUBSTRING( (DT_WSTR,30) GETDATE(),21, 2 )+".log" --EX2. 完整檔案名稱的範例:C:\myAdmin\20100704094021.log -- 精確度到年、月、日、小時、分、「10 秒」。 "C:\\myAdmin\\"+ SUBSTRING( (DT_WSTR,30) GETDATE(),1, 4 )+SUBSTRING( (DT_WSTR,30) GETDATE(),6, 2 )+SUBSTRING( (DT_WSTR,30) GETDATE(),9, 2 )+ SUBSTRING( (DT_WSTR,30) GETDATE(),12, 2 )+SUBSTRING( (DT_WSTR,30) GETDATE(),15, 2 )+SUBSTRING( (DT_WSTR,30) GETDATE(),18, 1 )+".log" --EX3. 完整檔案名稱的範例:C:\myAdmin\2010110511164.log -- 精確度到年、月、日、小時、分、「10 秒」。 "C:\\myAdmin\\"+ REPLACE( REPLACE( REPLACE( SUBSTRING( (DT_WSTR, 30) GETDATE(), 1, 18 ) , "-", "" ), " ", "" ), ":", "" ) +".log"
上述的範例,其精確度是到「0.01 秒」。
步驟06. 點選「評估運算式」,可以預覽產生的完整檔案名稱等資料。
步驟07. 點選「確定」,關閉「運算式產生器」視窗。
步驟08. 點選「確定」,關閉「屬性運算式編輯器」視窗。
步驟09. 執行此封裝。
步驟10. 執行「檔案總管」,檢查所產生的檔案。
請參考下圖所示:
但比較麻煩的是,每次執行此封裝,都會產生三個記錄檔案。
前兩個檔案,僅有檔頭,沒有放資料。
第三個檔案才有存放記錄的資料。
這可能是因為精確度到「0.01 秒」的緣故。
若是調整其精確度為「10 秒」,並加上自定的字串,或許就可以避開這類的問題。
有趣的是似乎不只三個,我加了多幾個 Task 都有用到資料連結,似乎就會再多幾個 Log File。看來在 Validate 後,會關閉 Log File,而後再開啟 Log File,但已經超過零點零幾秒,所以透過設定再開啟時,又是另一個 Log File
回覆刪除