(转)SQL Server:在 SQL Server 2005 中配置数据库邮件,发送邮件
SQL Server:在 SQL Server 2005 中配置數(shù)據(jù)庫郵件,發(fā)送郵件
[作/譯者]:鵬城萬里 ?? [日期]:2008-07-24 ?? [來源]:本站原創(chuàng) ?? [查看]: 2031
【鵬城萬里】 發(fā)表于 www.sqlstudy.com
SQL Server:在 SQL Server 2005 中配置數(shù)據(jù)庫郵件。
對于真正的 DBA 來說,數(shù)據(jù)庫郵件是必不可少的。 例如,數(shù)據(jù)庫發(fā)生了警報(alert), DBA 希望得到郵件通知,以便即時排除故障。 或者是監(jiān)控數(shù)據(jù)庫作業(yè)(SQL Server Job)的運行狀況,當(dāng)檢查到失敗的作業(yè)時, 就發(fā)送數(shù)據(jù)庫郵件報告給 DBA。
在 SQL Server 2000 中 配置 “SQL Mail”,需要安裝 Outlook,配置過程比較麻煩。 在 SQL Server 2005 中配置 “Database Mail” 就相對容易多了。 主要是理清思路。
SQL Server 并沒有內(nèi)置郵件服務(wù)器(Mail Server), 它跟我們發(fā)送郵件一樣,需要用戶名和密碼通過 SMTP(Simple Message Transfer Protocol) 去連接郵件服務(wù)器。我們想讓 SQL Server 來發(fā)送郵件,首先要告訴它用戶名稱,密碼, 服務(wù)器地址,網(wǎng)絡(luò)傳送協(xié)議,郵件服務(wù)器的端口。。。等信息。這是通過 SQL Server 系統(tǒng) 存儲過程 sysmail_add_account_sp 來實現(xiàn)的。
exec sysmail_add_account_sp這樣,在 SQL Server 2005 中就添加了一個發(fā)送郵件的帳戶。 道理上講,有了這個郵件帳戶,SQL Server 就可以發(fā)送郵件了。 如:
sp_send_dbmail @account_name = 'mail_account'但是,SQL Server 考慮的更周全。試想:如果這個郵件帳戶發(fā)生故障 (比如:用戶密碼過期,或者郵件服務(wù)器宕機)那豈不是發(fā)送不了郵件了? 為了應(yīng)對這種情況,SQL Server 2005 引入了 mail profile 這個東東。 一個 profile 中可以包含多個 account (郵件帳戶),這樣,SQL Server 發(fā)郵件的時候會依次嘗試 profile 中的多個郵件帳戶,如果發(fā)送成功,則退出, 否則,利用下一個郵件帳戶發(fā)送郵件。其中,添加 profile 和 在 account 和 profile 建立映射是通過下面兩個系統(tǒng)存儲過程實現(xiàn)的:
sysmail_add_profile_spsysmail_add_profileaccount_sp
這時候,SQL Server 發(fā)送郵件,就采用下面的方法了:
sp_send_dbmail @profile_name = 'profile_name'下面是具體的配置郵件步驟
在 sa 系統(tǒng)帳戶下運行。
1. 啟用 SQL Server 2005 郵件功能。
use mastergo
exec sp_configure 'show advanced options',1
go
reconfigure
go
exec sp_configure 'Database mail XPs',1
go
reconfigure
go
2. 在 SQL Server 2005 中添加郵件帳戶(account)
exec msdb..sysmail_add_account_sp@account_name = 'p.c.w.l' -- 郵件帳戶名稱(SQL Server 使用)
,@email_address = 'webmaster@sqlstudy.com' -- 發(fā)件人郵件地址
,@display_name = null -- 發(fā)件人姓名
,@replyto_address = null
,@description = null
,@mailserver_name = '58.215.64.159' -- 郵件服務(wù)器地址
,@mailserver_type = 'SMTP' -- 郵件協(xié)議(SQL 2005 只支持 SMTP)
,@port = 25 -- 郵件服務(wù)器端口
,@username = 'webmaster@sqlstudy.com' -- 用戶名
,@password = 'xxxxxxxxx' -- 密碼
,@use_default_credentials = 0
,@enable_ssl = 0
,@account_id = null
3. 在 SQL Server 2005 中添加 profile
exec msdb..sysmail_add_profile_sp @profile_name = 'dba_profile' -- profile 名稱,@description = 'dba mail profile' -- profile 描述
,@profile_id = null
4. 在 SQL Server 2005 中映射 account 和 profile
exec msdb..sysmail_add_profileaccount_sp @profile_name = 'dba_profile' -- profile 名稱,@account_name = 'p.c.w.l' -- account 名稱
,@sequence_number = 1 -- account 在 profile 中順序
5. 利用 SQL Server 2005 Database Mail 功能發(fā)送郵件。
exec msdb..sp_send_dbmail @profile_name = 'dba_profile' -- profile 名稱,@recipients = 'sqlstudy@163.com' -- 收件人郵箱
,@subject = 'SQL Server 2005 Mail Test' -- 郵件標(biāo)題
,@body = 'Hello Mail!' -- 郵件內(nèi)容
,@body_format = 'TEXT' -- 郵件格式
6. 查看郵件發(fā)送情況:
use msdbgo
select * from sysmail_allitems
select * from sysmail_mailitems
select * from sysmail_event_log
如果不是以 sa 帳戶發(fā)送郵件,則可能會出現(xiàn)錯誤:
Msg 229, Level 14, State 5, Procedure sp_send_dbmail, Line 1EXECUTE permission denied on object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
這是因為,當(dāng)前 SQL Server 登陸帳戶(login),在 msdb 數(shù)據(jù)庫中沒有發(fā)送數(shù)據(jù)庫郵件的權(quán)限, 需要加入 msdb 數(shù)據(jù)庫用戶,并通過加入 sp_addrolemember 角色賦予權(quán)限。假設(shè)該SQL Server 登陸帳戶 名字為 “dba”
use msdbgo
create user dba for login dba
go
exec dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole',
@membername = 'dba'
go
此時,再次發(fā)送數(shù)據(jù)庫郵件,仍可能有錯誤:
Msg 14607, Level 16, State 1, Procedure sp_send_dbmail, Line 119profile name is not valid
雖然,數(shù)據(jù)庫用戶 “dba” 已經(jīng)在 msdb 中擁有發(fā)送郵件的權(quán)限了, 但這還不夠,他還需要有使用 profile:“dba_profile” 的權(quán)限。
use msdbgo
exec sysmail_add_principalprofile_sp @principal_name = 'dba'
,@profile_name = 'dba_profile'
,@is_default = 1
從上面的參數(shù) @is_default=1 可以看出,一個數(shù)據(jù)庫用戶可以在多個 mail profile 擁有發(fā)送權(quán)限。
現(xiàn)在,可以利用 SQL Server 2005 發(fā)送數(shù)據(jù)庫郵件了吧。如仍有問題,請留言。
?
本文由 www.sqlstudy.com 原創(chuàng),版權(quán)所有,轉(zhuǎn)載請注明作者和出處!
本文鏈接:http://www.sqlstudy.com/sql_article.php?id=2008072403
轉(zhuǎn)載于:https://www.cnblogs.com/s021368/articles/1683573.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的(转)SQL Server:在 SQL Server 2005 中配置数据库邮件,发送邮件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android网易云音乐api接口,网易
- 下一篇: mysql case快捷方法_MySQL