Shunze 學園 >電腦資訊學系 >吃軟不吃硬 > 《分享》伺服器主動排程通知-MS平台with SQL Server 哈囉,還沒有註冊或者登入。請你[註冊|登入]
« 上一篇主題 下一篇主題 » 顯示成列印模式 | 增加到我的最愛
發表新主題 發表回覆
作者
主題
shunze
工友伯伯


註冊日期: 2002 04
來自: 潮汐終止之地
文章: 2380

shunze 離線
《分享》伺服器主動排程通知-MS平台with SQL Server引用回覆 編輯/刪除文章 搜尋由  發表的其他文章 回報給版主 IP 位置 回此頁最上方

在網頁程式中,網頁的服務模式是被動式的,只有在訪客點選網頁時,才會觸發對應的網頁程式。

那有沒有辦法實現主動式的服務或程序呢?

一般來說,要主動的進行程序,不外就是在主機上設定排程工作;時間到了,由排程程式來呼叫、執行工作。

在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!




2004-08-19, 20:17 shunze 的個人資料 把 shunze 加入好友列表 發送Email給 shunze 瀏覽 shunze 的網站 MSN : shunze@gmail.com
shunze
工友伯伯


註冊日期: 2002 04
來自: 潮汐終止之地
文章: 2380

shunze 離線
《分享》如何正確建立給SQL Mail用的郵件設定檔?引用回覆 編輯/刪除文章 搜尋由  發表的其他文章 回報給版主 IP 位置 回此頁最上方

建立SQL Mail來執行郵件服務,理論上很簡單,不過在實作上,順子倒是遇到很大的困難...
設定好的郵件組態檔(Mail Profile)往往沒辦法被SQL Mail引用!?

建立好的Mail組態檔,如何能正確的被SQL Mail引用,是一個很大的問題!
經過多次失敗,順子歸納出一個結論,關鍵在於MSSQLServer服務的執行帳號

啟動MSSQLServer服務的帳號必需和建立此郵件設定檔的帳號相同。
因為郵件組態檔的建立,跟使用者的環境有很大的關係;
不同的使用者,其所建的郵件組態檔並不相同。
所以在沒有宣告使用者的情況下,SQL Mail並沒有辦法正確引用適當的郵件組態檔。


因此為了讓SQL Mail能正確引用郵件組態檔,
我們必需設定MSSQLServer服務的執行帳號跟建立此郵件設定檔的帳號一致,
如此一來,使用者的身分就能一致,也能正確引用此郵件設定檔了。


如何設定MSSQLServer服務的執行帳號呢?

可以到Windows的『控制台/系統管理工具/服務』來檢查MSSQLServer服務的執行帳號。
在此,我們可以修改MSSQLServer服務的執行帳號為建立此郵件設定檔的帳號;
點選『瀏覽』來修改啟動MSSQLServer的帳號吧。




接著我們就可以以此身分,在『控制台/郵件』中建立一個郵件組態檔。

這時,因為不同服務間的啟用帳號一致,SQL Mail在引用郵件設定檔時,並不會發生混淆的情形;
你的SQL Mail就能正常運作了∼



♥順子老婆的網拍,請多關照∼

If you don't like something, change it.
If you can't change it, change your attitude.
Don't complain!




2004-08-30, 19:59 shunze 的個人資料 把 shunze 加入好友列表 發送Email給 shunze 瀏覽 shunze 的網站 MSN : shunze@gmail.com
  « 上一篇主題 下一篇主題 »
發表新主題 發表回覆
跳到:

Powered by: Burning Board 1.1.1 2001 WoltLab GbR