2010-04-15 57 views
0

我有一個挑戰,我試圖解決,我不能從文檔或示例工作,如果SSIS適合我的問題。SSIS是否適合我的問題(數據庫複製查詢)

我有2個表格(工作和任務)。喬布斯代表了一大部分工作,而任務與工作息息相關。通常會有從每個作業1個任務到每個作業1,000,000個任務的任何事情。每個任務都有一個存儲job_id的列。作業表中的job_id是主鍵。

每N個小時,我要做到以下幾點:

  1. 採取一切在那裏,因爲我最後一次運行的工作已經完成了任務的行(基於具有END_TIME值,該值是內從現在起到上次運行的時間),並將這些添加到「查詢」數據庫的作業列中。

  2. 將包含在第1步中的作業中具有job_id的所有任務複製到「查詢」數據庫的任務列中。

基本上,我希望能夠經常更新我的查詢的數據庫,但我只希望包括那些完成的任務已完成的工作(因此一個END_TIME)的要求和任務。

這可能會每天進行2-3次,以便用戶能夠查詢實時數據的近似最新副本。

SSIS是否適合這項任務,如果有的話,您可以請建議一些文檔,以顯示第一步的結果列中的哪一列用作第二步的標準?

在此先感謝...

回答

0

當然SSIS可以做到這一點。

如果您想確保子記錄已移動,請爲您的數據流源查詢第二個數據流。您將記錄插入到第一個數據流中的主表中。然後,您使用一個查詢來選擇源子表中不在目標子表中並且在父目標表中有記錄的任何記錄。通過這種方式,您可以捕捉現有已關閉記錄的任何更改(您知道會有一些,有些人會過早關閉某個工作,然後重新打開並添加一些內容)。

或者,您可以添加記錄移動到臨時表。然後在爲子表執行數據流時加入該表。這將確保您移動的記錄是子表填充的記錄。

或者,如果您處於非規範化數據倉庫中,只需編寫一個查詢,將父表和子表連接在一起,並且結束日期的where子句不爲null。當然,不要忘記檢查當前不在數據倉庫中的記錄。

+0

輝煌 - 謝謝...我會堅持在文檔中,並嘗試瞭解如何做到這一點。 幸運的是,沒有辦法再開一份工作,所以那裏的風險不大。這是一個包含作業和任務的原子提交。 最後的放縱請...您有沒有指向一個文檔的解釋SSIS如何理解目標上的數據以及需要運行哪些數據的指針? 在我的腳本解決方案中,我得到一個datestamp(包括時間),將最後一次運行從數據庫中拉出,然後獲取該窗口中的行。最後,我將新的日期戳記放入數據庫中。 – Anonymouslemming 2010-04-15 14:32:01