《分享》伺服器主動排程通知-MS平台with SQL Server | |
在網頁程式中,網頁的服務模式是被動式的,只有在訪客點選網頁時,才會觸發對應的網頁程式。
那有沒有辦法實現主動式的服務或程序呢?
一般來說,要主動的進行程序,不外就是在主機上設定排程工作;時間到了,由排程程式來呼叫、執行工作。
在MS平台上,若後端資料庫是SQL Server,那麼我們可以透過SQL Server來進行定時排程及發信的工作喔!
本篇就是簡單介紹如何在MS平台上透過SQL Server來實現伺服器主動發信通知。
基本上要達成『伺服器主動發信通知』,我們可以藉由SQL Server的「代理程式」及「SQLMail」這兩個模組來完成。
在「SQL Server代理程式」中,在我們設定好執行時間、進行動作後,基本上排程就已完成。
我們可以藉由它來完成主動的定時工作,當然也可以藉由它來執行定時發信動作。
不過光是「SQL Server代理程式」並無法達成發信的功能;
要發送信件,還必需靠「SQLMail」這個模組來建構發信的機制。
要設定「SQLMail」,SQL Server主機上必需有支援郵件組態的收發信軟體才行。
最好搭配的客戶端收發收信軟體是MS Outlook。(注意:Outlook Express並不支援!)
使用Outlook時,我們可以在控制台→郵件中設定郵件設定檔。
設定方法就如同設定一般client端收信軟體一樣,這個部分並不難。
設定檔完成之後,若Outlook不是預設的電子郵件程式,那麼我們還必需指定Outlook為預設的電子郵件程式才行!
接著,我們就可以在SQL Mail引用這個設定檔了;按下測試來測試郵件設定檔是否正確吧∼
以上步驟設定完成了,接著我們就可以下達stored procedure來發信囉!
以下為簡單的sp範例:
SET QUOTED_IDENTIFIER OFF
GO
CREATE Procedure XXXX
AS
DECLARE @SQL varchar(1000)
--Build valid sp_sendmail statement using variables
SET @SQL="master..xp_sendmail "
SET @SQL=@SQL + "@recipients='111@test.com',"
SET @SQL=@SQL + "@copy_recipients='222@test.com',"
SET @SQL=@SQL + "@subject='郵件主旨',"
SET @SQL=@SQL + "@message='郵件內容.....'"
EXEC (@SQL)
GO
/*
其中@recipients為收件人,
@copy_recipients為收件人副本,
@subject為主旨,@message為信件內容,
除了收件人副本外,並它三個參數為必需的!
*/
在語法中要注意的重點有以下幾個:
- xp_sendmail為主要的發信預儲程序,要SQL Mail設定檔正確無誤執行後,才能正確使用。
- SET QUOTED_IDENTIFIER OFF的用意在於使雙引號內的陳述式能夠被順利執行。
- EXEC (@SQL)的括號不能省略,否則無法執行xp_sendmail發信程序。
- SQL Mail不支援HTML格式的郵件內容,所以傳送的內容請以純文字檔為主。
然後,我們就可以在「SQL Server代理程式」中,設定一個新的排程工作來定時執行了!
嗯,透過SQL Server來實現伺服器主動發信通知,其實也不難嘛∼
參考:如何設定SQL Mail
♥順子老婆的網拍,請多關照∼
If you don't like something, change it.
If you can't change it, change your attitude.
Don't complain!
|