2015-10-08 354 views
-1

在SQL Server數據庫中,我有一個包含2列的表StatusExpiryDateSQL Server自動更新列

我想要一個機制,在ExpiryDate結束時要將Status轉爲Expired,並且想要向郵件地址發送郵件通知。

UPDATE table 
SET Status = 'expired' 
WHERE ExpiryDate < GETDATE() 

我知道如何通過C#代碼來做到這一點,但我該如何自動化呢?

就像每一天腳本執行並啓動電子郵件發送過程一樣? 它是觸發器還是不同的東西?有人可以幫助獲得有關實施的正確名詞和一些見解嗎?

+6

SQL Server代理作業? – ErikEJ

+0

是否必須在數據庫中?您可以編寫一個作爲Windows任務運行的控制檯應用程序或完整的Windows服務來執行此操作。 – AlG

+0

有沒有理由不能用觸發器做到這一點? –

回答

1

使用存儲過程(計劃作爲作業)更新表併發送電子郵件。

要配置電子郵件選項,請轉至對象資源管理器的「管理」部分,右鍵單擊「數據庫郵件」並單擊「配置數據庫郵件」。

然後利用sp_send_dbmail系統存儲過程發送郵件。

1

創建在SQL Server下的SQL Server代理節點執行

UPDATE table 
SET Status = 'expired' 
WHERE ExpiryDate < GETDATE() 

然後一個存儲過程,創建你所需要的日程表來運行的作業。

請務必在您的存儲過程中使用sp_send_dbmail - https://msdn.microsoft.com/en-us/library/ms190307.aspx發送您的電子郵件。