2014-02-11 55 views
1

我有一個SQL查詢(如下圖所示),我需要定期運行:WebMatrix的 - 定期運行SQL查詢

db.execute("UPDATE property_info SET IsActive=false WHERE ExpiryDate > @0", CurrentDate); 

該查詢基本上是用來檢查所有屬性,並查看是否或者他們已經過了他們的失效日期。如果是,那麼它會自動將該屬性設置爲不活動。由於「CurrentDate」是一個滾動窗口,我想要自動重新運行此查詢,可能每天都在運行。

這是我應該使用存儲過程的東西?

沒有任何用戶交互的最佳途徑的任何建議?

+0

對不起,只是補充一點,我使用SQL服務器快遞(由於預算不幸),所以SQL代理作業是不可能的。 – Gavin5511

回答

1

實現此目的的一種簡單方法是將代碼行添加到項目根目錄中的_PageStart.cshtml。每次執行網站上的任何頁面時,都會執行此操作。這可能是過分誇大的東西,從外表來看,只需要每天檢查一次。爲了緩解這種情況,您可以在Application集合中使用簡單的DateTime戳記,以確保它每天最多隻能運行一次(或根據需要調整時間間隔)。這絕不是完全預定代碼執行的解決方案,但它可以很好地滿足您的目的(和您的預算)。

+0

如果沒有應用程序集合中的DateTime標記,我認爲這可能有點矯枉過正:p但是有了它,它肯定會成爲暫時的解決方案。我最終將升級到SQL標準,然後使用SQL Server代理運行此操作。我會讓你知道我如何繼續使用應用程序集合,因爲這對我來說是全新的領域:) – Gavin5511

+0

它與'Session'集合的工作方式相同,只是存儲在其中的值在整個服務器應用程序之間共享而不是每個用戶。和'Session'對象一樣,通常建議儘可能少的使用它。 – Polynomial