2010-10-18 78 views
0

我正在使用SQL Server 2005 ...SQL隊列,在未來執行SP

我想用觸發器監視table1以進行更新。在發生此更新時,我將使用來自table2的數據來檢查另一個表(表2),我將一個項目放入隊列中,以便將來在可變日期執行。可能是從現在起10秒或2小時,這個日期是通過檢查表2中的數據確定的。在放入隊列中的項目被處理之前,觸發器1有可能再次執行。在這種情況下,需要刪除隊列中的項目,並將新項目放入隊列中。

過程:

table1的更新 表1的觸發火災和查詢表2確定時間戳。這個時間戳和代碼被添加到隊列中。有東西監視這個隊列,並以確定的時間戳執行代碼。如果在從隊列中檢索項目之前更新了table1,則刪除該項目並將新項目添加到隊列中。

是否有一個消息服務在那裏,將監視日期並在該日期執行,或者我應該創建一個新的SQL作業,每次觸發此觸發器?或者還有其他選擇嗎?這需要可擴展。

我希望我能解釋我的問題,如果您有任何問題讓我知道。謝謝你盡你所能的幫助。

回答

0

你看過SQL Server Service Broker

Service Broker Tutorials

UPDATE:您可以設置優先級的消息,但我不認爲你可以在特定日期本身提取。除定義之外,如果您將兩條消息放入隊列中,則最早的隊列將首先從隊列中「彈出」,即按照升序排列的日期順序將其刪除。

+0

我有一點點,但不知道它是否可以基於日期拾取物品,而不是僅拾取下一個可用物品。 – 2010-10-19 00:10:12

0

SQL-Server代理作業通常用於在特定日期/時間執行任務。我認爲可以用sp創建或修改一個工作,所以你可以在觸發器中使用它們。另一方面,可能會有一些權限問題。觸發觸發器的用戶必須具有創建/修改作業的權限。