我已經寫了一個餐廳管理應用程序。 我有一個基於SQL Server 2005的數據庫,它有一個名爲OrdersItems的表。每隔5分鐘我想讀取此表的所有行並根據特定條件更新一些字段。數據庫計劃操作
我不想在我的主應用程序中這樣做,我更喜歡有一個替代引擎來執行此操作。
哪種方法是執行此類任務的最佳方法?另請注意,此表(OrdersItems)每次都在處理中,因爲主應用程序必須始終運行並獲取新的餐館訂單。
我已經寫了一個餐廳管理應用程序。 我有一個基於SQL Server 2005的數據庫,它有一個名爲OrdersItems的表。每隔5分鐘我想讀取此表的所有行並根據特定條件更新一些字段。數據庫計劃操作
我不想在我的主應用程序中這樣做,我更喜歡有一個替代引擎來執行此操作。
哪種方法是執行此類任務的最佳方法?另請注意,此表(OrdersItems)每次都在處理中,因爲主應用程序必須始終運行並獲取新的餐館訂單。
您可以create a SQL Server Agent job每五分鐘更新一次。
如果您使用SQL Server Express版本,則不能使用SQL Server代理程序,因爲它只包含在「更大」版本的SQL Server中。
在這種情況下,you can create your jobs manually使用批處理文件和Windows任務計劃程序。
我期望SQL任務/維護計劃將是最好的。
您可以將它們設置爲您想要的任何時間間隔,指定要運行的SQL語句,維護任務等。
如果你想知道它何時失效,你也可以設置警報等。
在可以訪問數據庫的服務器上部署cron作業,每隔5分鐘啓動一次,並使用事務處理數據。我在那裏看到一個問題:如果要處理的數據量很大,它可能會運行超過五分鐘。
cron作業在C#\ SQL Server解決方案中並不完全常見 –
我絕對同意Christian和dougajmcdonald關於使用SQL任務/維護的觀點。但是,由於您在代碼中包含c#,因此可以選擇創建Windows服務。
這種方法
This answer包含一個Windows服務,定期獲取數據並執行模板。您可能只是想要更改DoStuff
方法來執行存儲過程
謝謝,我對這種方法很感興趣,但是我想知道這種方法會降低數據庫性能嗎?正如我之前提到的,這張表總是在處理中。 – Shahrokh
就數據庫性能而言,我不認爲您使用哪種技術(對話計時器,SQL代理,窗口服務,cron作業)並不重要。無論使用哪一個,您都需要優化Update語句。 –
創建一個dialog timer並讓它存儲過程activate。這具有完全包含在數據庫內部的優點(無需外部進程),它不需要SQL Agent(在Express上運行),並且在數據庫分離/附加和備份/恢復操作(預定作業將在新恢復的數據庫恢復後運行)。
您使用的是Express版還是其他版本? –