指定變更資料的間隔
適用於:SQL Server Azure Data Factory 中的 SSIS Integration Runtime
在執行累加式變更資料載入之 Integration Services 套件的控制流程中,第一個工作是計算變更間隔的端點。 這些端點是 datetime 值,而且將會以封裝變數儲存,以便稍後在封裝中使用。
注意
如需設計控制流程之完整程序的描述,請參閱異動資料擷取 (SSIS)。
設定端點的封裝變數
設定「執行 SQL」工作以計算端點前,必須先定義儲存端點的封裝變數。
設定封裝變數
在 SQL Server Data Tools (SSDT) 中開啟新的 Integration Services 專案。
在 [變數] 視窗中,建立下列變數:
建立具有 datetime 資料類型的變數,以保存間隔的起始點。
這個範例會使用變數名稱 ExtractStartTime。
建立具有 datetime 資料類型的另一個變數,以保存間隔的結束點。
這個範例會使用變數名稱 ExtractEndTime。
如果您要在主要封裝中,計算執行多個子封裝的端點,您可以使用「父封裝變數」組態,將這些變數的值傳遞到每個子封裝。 如需詳細資訊,請參閱 執行封裝工作 和 在子封裝中使用變數和參數的值。
計算變更資料的起始點和結束點
設定間隔端點的封裝變數後,您可以計算這些端點的實際值,然後將這些值對應到對應的封裝變數。 這些端點都是 datetime 值,因此您必須使用可以計算或處理 datetime 值的函數。 Integration Services 運算式語言和 Transact-SQL 都有可以處理 datetime 值的函數:
Integration Services 運算式語言中可處理 datetime 值的函數
在 Transact-SQL 中,使用 datetime 值的函數
日期和時間資料類型與函數 (Transact-SQL)。
使用其中任何一個 datetime 函數計算端點前,您必須判斷間隔是否已經固定,而且是否定期發生。 一般而言,您會想要將來源資料表中發生的變更定期套用到目的地資料表。 例如,您可能會想要每小時、每天,或每週套用一次這些變更。
了解您的變更間隔是固定還是比較隨機後,您就可以計算端點:
計算開始日期和時間。 您可以使用上次載入的結束日期和時間當做目前的開始日期和時間。 如果將固定間隔用於累加式載入,您可以使用 Transact-SQL 或 Integration Services 運算式語言的 datetime 函數來計算這個值。 否則,您可能需要保存執行之間的端點,並使用「執行 SQL」工作或「指令碼」工作來載入前一個端點。
計算結束日期和時間。 如果您將固定間隔用於累加式載入,計算目前的結束日期和時間當做開始日期和時間的位移。 再次說明,您可以使用 Transact-SQL 或 Integration Services 運算式語言的 datetime 函數來計算這個值。
在下列程序中,變更間隔會使用固定間隔,並假設累加式載入封裝是每天執行而沒有例外。 否則,將會遺失遺漏間隔的變更資料。 間隔的起點是前天的午夜,也就是在前 24 到 48 小時之間。 間隔的結束點是昨天的午夜,也就是昨天晚上,前 0 到 24 小時之間。
計算擷取間隔的起點和結束點
在 SSIS Designer 的 [控制流程] 索引標籤上,將「執行 SQL」工作新增到套件中。
開啟 [執行 SQL 工作編輯器]然後在編輯器的 [一般] 頁面上,選取下列選項:
針對 [ResultSet],選取 [單一資料列]。
將有效的連接設定到來源資料庫。
針對 [SQLSourceType],選取 [直接輸入]。
針對 [SQLStatement],輸入下列 SQL 陳述式:
SELECT DATEADD(dd,0, DATEDIFF(dd,0,GETDATE()-1)) AS ExtractStartTime, DATEADD(dd,0, DATEDIFF(dd,0,GETDATE())) AS ExtractEndTime
在 [執行 SQL 工作編輯器] 的 [結果集]頁面上,將 ExtractStartTime 結果對應到 ExtractStartTime 封裝變數,並將 ExtractEndTime 結果對應到 ExtractEndTime 封裝變數。
注意
如果使用運算式來設定 Integration Services 變數的值,則每次存取變數的值時,就會評估該運算式。
後續步驟
計算變更範圍的起點和結束點後,下一個步驟是判斷變更資料是否就緒。
下一個主題:判斷變更資料是否就緒