2015-05-28 17 views
0

我有數據要加載到自上次提取此數據以來我只需要提取記錄的位置。沒有日期字段可將此信息保存在我的目的地表中,因此我必須跟蹤我最後一次提取的最大日期。問題是我看不到如何在SSIS中將該值保存到項目下次運行時。將數據保留在SSIS中執行下一個執行

我看到這一點: Persist a variable value in SSIS package

但因爲另一個過程,清洗和重新加載數據從我的過程中分離它不會爲我工作。這意味着我不得不做更多的事情,而不僅僅是知道我的流程最後一次運行。

我能想到的唯一解決方案是創建一個表,但創建一個表來保存一個字段似乎有點多。

+1

如果您沒有將其存儲在數據庫中,並且鏈接的「使用文件」(XML或其他方式)策略是不可接受的,那麼您在兩次運行之間持續存在的選擇是相當有限的。我想你可能會變得瘋狂並重寫你的包源代碼來設置一個內部變量。數據庫中的表格不容易被損壞,這對於SSIS使用來說似乎是一個不錯的選擇。 – DaveE

回答

1

這是一件很常見的事情。您創建一個執行表,用於存儲軟件包名稱,開始時間,結束時間以及軟件包是否失敗/成功。然後您可以拉取上次成功執行的最大開始時間。

0

在執行過程中,您不能在包中保留任何內容。

你在說什麼是一種差異複製的形式,這已經做了很多次。

對於差異複製,在用戶(系統讀取數據)或發佈者(提供數據的系統)中存儲某種狀態是正常的,這些狀態可以記住您所要達到的狀態。

所以我建議你:

  1. 閱讀上差異複製設計模式
  2. 絕對把你的心在休息約將數據寫入表

如果你最終有超過一個源系統或多個源表中,您的存儲表不會有一條記錄。想一想。我前幾天回答了這樣一個問題 - 隨着時間的推移,你會發現你會添加諸如上一次複製運行,花費多少時間,傳輸了多少記錄等便利的東西。

Is it viable to have a SQL table with only one row and one column?

0

TTeeple和Nick.McDermaid是絕對正確的,如果可能的話你應該遵循他們的建議。

但是,如果由於某種原因,您無權寫入執行表,您可以隨時使用腳本任務將上次加載日期讀取/寫入任何本地文件系統上的文本文件系統,重新運行SSIS。