SQL server 2000郵件配置方法
--========================================
--SQL 郵件配置
--outlook 2003,sql server 2000,163郵局
--========================================
OutLook配置:OutLook 2000 網上說經常發不成功,我用的是
OutLook 2003,打開sql server 2000的企業管理器,展開支持服務,右擊“sql 郵件”點屬性。這時里面就會出現有outlook了。選擇它就可以了。
sql server 2000:在控制面板中打開“服務”,找到:MSSQLSERVER 和 SQLSERVERAGENT,其登錄方式不應該為“本地系統”,應該是具有郵件客戶端程序操作權限的 Windows 用戶,比如 Windows 管理員,修改方法為,雙擊該服務,切換到“登錄”標簽,選擇“此帳戶”,點擊“瀏覽”選擇一個用戶,并輸入密碼,點擊“確定”。右鍵,重新啟動這兩個服務。展開“管理”,“SQL Server 代理”,在“操作員”上點擊右鍵,“新建一個操作員”,這個操作員就是我們要向其發送電子郵件的人。在“企業管理器”中,展開“支持服務”,在“SQL 郵件”上點擊右鍵,“屬性”,在下拉列表框中選擇“配置文件名”,點擊測試,檢查是否成功.如果我們要對作業進行監視,比如當數據庫備份失敗時向操作員發送郵件,就得在“SQL Server 代理”的“作業”列表中打開對應作業的屬性,切換到“通知”標簽,選擇相應操作員即可。至此,一個 SQL 郵件配置就完成了,請確保您的 SQL Server Agent 隨時都在運行。請確保您的 SQL Server 補丁是最新的。
要注意的幾個問題:
1.sql server 2000的啟動帳戶要和sqlagent的啟動帳戶相同。并且不能用系統帳戶。
2.smtp服務器是否需要驗證。hotmail的免費信箱好像不可以在outlook里設置,最好用OutLook 2003
3.在sql郵件運行過程中不能關閉outlook,否則不能發送郵件,要先啟動OutLook 2003 再啟動 SQL ,可執行exec startmail /exec stopmail 來啟動或停止sqlmail.
--下面為測試代碼,可將直接放入作業里,增加調度即可運行.
--=======================================
--將存儲過程的結果發送給指定聯系人
--=======================================
exec xp_sendmail [url=mailto:'
***@hotmail.com',@query='sp_configure']
'***@hotmail.com',@query='sp_configure'[/url]
--============================================
--統計northwind數據庫中相關信息
--并將結果發送到指定的信箱
--原理:northwind數據庫中沒有xp-sendmail
--存儲過程,所以采用方式為:
--將查詢結果寫入一個全局臨時表
--然后在刪除全局臨時表
--===========================================
set nocount on
select case when(grouping(od.productid)=1)then '定單總計:'
else isnull(od.productid,'空值') end as productid,
case when (grouping(od.orderid)=1)then '產品總計:'
else isnull(od.orderid,'空值')end as orderid,sum(od.quantity) as'總計'
into ##boyi55
from (select convert(nvarchar(10),productid) as productid,convert(nvarchar(10),orderid) as orderid,quantity from [order details]) as od
group by od.productid,od.orderid
with cube
exec master..xp_sendmail @recipients='
h11h99@126.com;
fengjicai@hotmail.com;
queeny_fei@yahoo.com.cn',
@subject='northwind數據庫中order details相關信息匯總結果',
@message='此信息由sql server 2000數據庫作業自動發送,如果輸出錯誤,請直接回復e-mail到:[url=mailto:fengjicai@hotmail.com]
***@hotmail.com[/url]',
@query='select * from ##boyi55',
@width=100--設置查詢的輸出文本行寬
drop table ##boyi55
set nocount off
--===========================================
--將結果作為附件文件發送
--===========================================
exec master..xp_sendmail @recipients='
***@hotmail.com',
@query='select * from information_schema.tables',
@subject='SQL Server report',
@message='The contents of information_schema.tables:',
@attach_results='true',
@width= 250
======================
--===========================================
--===========================================
xp_sendmail {[@recipients =] "recipients [;...n]"}
[,[@message =] "message"]
[,[@query =] "query"]
[,[@attachments =] attachments]
[,[@copy_recipients =] "copy_recipients [;...n]"
[,[@blind_copy_recipients =] "blind_copy_recipients [;...n]"
[,[@subject =] "subject"]
[,[@type =] "type"]
[,[@attach_results =] "attach_value"]
[,[@no_output =] "output_value"]
[,[@no_header =] "header_value"]
[,[@width =] width]
[,[@separator =] "separator"]
[,[@echo_error =] "echo_value"]
[,[@set_user =] "user"]
[,[@dbuse =] "database"]
其中@recipients是必需的
參數說明:
參數 說明
@recipients 收件人,中間用逗號分開
@message 要發送的信息
@query 確定執行并依附郵件的有效查詢,除觸發器中的插入表及刪除表外,此查詢能引用任何對象
@attachments 附件
@copy_recipients 抄送
@blind_copy_recipients 密送
@subject 標題
@attach_results 指定查詢結果做為附件發送
@no_header 不發送查詢結果的列名
@set_user 查詢聯接的用戶名,默認為Guset
@dbuse 查詢所用的數據庫,默認為缺省數據庫