[SSIS]:讓其產生的檔案名稱能夠依據系統時間自動變更
主題: |
[SSIS]:讓其產生的檔案名稱能夠依據系統時間自動變更 |
文章簡介: |
教開發人員如何在SSIS輸出檔案時,以系統時間自動存成檔名 |
作者: |
楊宏偉 |
版本/產出日期: |
V1.0/2016.11.01 |
1. 前言
SSIS具備可將資料寫入檔案的功能,通常在執行資料轉置的過程中,我們會使用此功能來做事件紀錄(Log)。然而,此功能預設的模式,只能將資料寫入預先設定的固定檔案,也就是說,永遠只會有一個Log 檔,每次產出時會覆蓋前次的檔案,實務的使用上相當不便。本文將介紹可自設檔名為系統時間的做法,加強SSIS事件紀錄檔的管理。
2. 目的
讓SSIS所輸出的檔案可以更有效的辨識及管理
3. 開始前準備
本架構建立於以下版本的環境:
(1.)開發工具 MicrosoftSQL Server Integration Services 2008以上版本
4. 實作
工作1:設定封裝的「記錄(Logging)」
步驟01. 在封裝內,點選「控制流程」。
步驟02. 在工具箱,選擇「資料流程工作」,拖曳至控制流程介面內。
步驟03. 點選資料流程切換至資料流程介面,我們並且從工具箱分別拖曳出「OLE DB來源」及「一般檔案目
的地」兩個控制項到介面上
步驟04.在「連接管理員」點選右鍵選擇「新增一般檔案連接」。
步驟05. 將檔案名稱透過瀏覽選取到要的路徑即可完成固定檔案要輸出的檔案位置及指定檔名。
但工作1的教學步驟到目前為止還是無法達到自訂檔名+系統時間的檔案輸出,該怎麼辦呢?
以下告訴你
工作2:設定文字檔的連線字串
步驟01. 在下方的「連接管理員」,點選先前所建立的連接,滑鼠右鍵,選擇「屬性」。
步驟02. 在此連接的「屬性」視窗, 點選「Expressions」的...圖示。
請參考下圖所示:
步驟03. 在「屬性運算式編輯器」視窗,在「屬性」區域,下拉選取「ConnectionString」。
請參考下圖所示:
步驟04. 在「屬性」區域,點選...圖示。
步驟05. 在「運算式產生器」視窗,在中間的「運算式」區域,輸入以下的範例程式碼。
請參考下圖所示:
--EX1. 完整檔案名稱的範例D:\LabOutPut\201603021071730.log
-- 精確度到年、月、日、小時、分、秒、0.01 秒。
D:\LabOutPut\+ 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. 完整檔案名稱的範例:D:\LabOutPut\20100704094021.log
-- 精確度到年、月、日、小時、分、「10 秒」。
D:\LabOutPut\+ 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. 完整檔案名稱的範例:D:\LabOutPut\2010110511164.log
-- 精確度到年、月、日、小時、分、「10 秒」。
D:\LabOutPut\+ REPLACE( REPLACE( REPLACE( SUBSTRING( (DT_WSTR, 30) GETDATE(), 1, 18 ) , "-", "" ), " ", "" ), ":", "" ) +".log"
上述的範例,其精確度是到「0.01 秒」。
步驟06. 點選「評估運算式」,可以預覽產生的完整檔案名稱等資料。
步驟07. 點選「確定」,關閉「運算式產生器」視窗。
步驟08. 點選「確定」,關閉「屬性運算式編輯器」視窗。
步驟09. 執行此封裝。
步驟10. 執行「檔案總管」,檢查所產生的檔案。
請參考下圖所示:
參考來源
● [SSIS]:設定封裝執行「記錄(Logging)」的「文字檔的 SSIS 記錄提供者」,讓其產生的檔案名稱能夠依據系統時間自動變更
http://sharedderrick.blogspot.tw/2010/07/ssislogging-ssis.html?m=1