2011-11-23 60 views
0

我有一個Sql Server 2005數據庫,其中一些數據將每天從外部系統(Oracle)中刷新。特別是幾個表格將每天加載,我需要安排一個作業才能在最後一個表格刷新後啓動。我怎樣才能做到這一點?我應該使用一個表來存儲有關數據加載的特定信息,並定期從中讀取數據,作爲sql作業的第一步?謝謝!由數據加載觸發的日程安排sql作業

回答

0

外部數據庫所做的最後一件事是更新當前運行。當你的工作完成後,它會設置上次運行=當前運行。當你的工作開始時(檢查狀態,如果兩者沒有不同,請嘗試在X週期內完成;然後失敗,如果不同,那麼你的工作就會運行)

+0

你是什麼意思「外部數據庫沒有更新當前運行」 - 我應該問他們寫什麼地方或這是一個SQL對象的屬性? –

+0

您需要有人以他們的方式通知您工作完成。我建議,因爲他們已經更新了幾個表格;讓他們在您選擇的表格中插入/更新字段/列以指示工作完成;或者他們必須有工作完成的記錄;你可以進入該系統並獲取該指標。不,這不是一個財產。 – xQbert

+0

是的,我認爲工作完成插入是檢查外部工作狀態的最簡單和有效的方式 - 謝謝 –

0

你需要知道外部系統完成更新數據的機制。

猜猜它是在外部系統中插入或更新一些紀錄由外部系統通知更新的結束S​​QL Server中的某些表(SYNC_TBL例如)

如果您需要:

  • 更新完成後立即開始工作 - 將tr igger在SYNC_TBL表上執行作業,使用sp_start_job。更新完成後
  • 開始你的工作了一段時間 - 計劃作業運行每隔15分鐘,而在第一步檢查SYNC_TBL,看看你的作業是否應該繼續或取消

請注意,您需要有另一個檢查在外部系統方面:更新數據可能不應該重新開始,直到作業完成其執行。您可以使用SYNC_TBL中的列已處理位來標記數據是否由您的作業處理。

+0

沒有必要在更新完成的那一刻開始工作,幾分鐘後就可以了 - 但是,因爲作業運行時間不會超過5-6小時,所以不會需要任何額外的檢查 - 最重要的是,在所有記錄被刪除並重新插入新記錄後,作業將開始 –