sql server 並沒有內建郵件伺服器(mail server),它跟我們傳送郵件一樣,需要使用者名稱和密碼通過 smtp(****** message transfer protocol)去連線郵件伺服器。我們想讓 sql server 來傳送郵件,首先要告訴它使用者名稱,密碼,伺服器位址,網路傳送協議,郵件伺服器的埠。。。等資訊。以下指令碼實現了資料庫郵件的配置:
--下面是具體的配置郵件步驟
--在 sa
系統帳戶下執行。
----1.
啟用 sql server 2005
郵件功能。
usemaster
goexec
sp_configure
'show advanced options'
,1
goreconfigure
goexec
sp_configure
'database mail xps'
,1
goreconfigure
go--2.
在 sql server 2005
中新增郵件帳戶(account
) exec
msdb..sysmail_add_account_sp
@account_name
='jgj'
-- 郵件帳戶名稱(sql server
使用),
@email_address
=[email='[email protected]']'[email protected]'[/email]
-- 發件人郵件位址
,@display_name
=null
-- 發件人姓名
,@replyto_address
=null
,@description
=null
,@mailserver_name
='203.86.70.229'
-- 郵件伺服器位址
,@mailserver_type
='smtp'
-- 郵件協議(sql 2005
只支援 smtp),
@port
=25
-- 郵件伺服器端口
,@username
=[email='[email protected]']'[email protected]'[/email]
-- 使用者名稱
,@password
='******'
-- 密碼
,@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
-- 在 sql server 2005
中對映 account
和 profile
exec
msdb..sysmail_add_profileaccount_sp
@profile_name
='dba_profile'
-- profile
名稱 ,
@account_name
='jgj'
-- account
名稱 ,
@sequence_number
=1
-- account
在 profile
中順序
--5.
利用 sql server 2005 database mail
功能傳送郵件。
exec
msdb..sp_send_dbmail
@profile_name
='dba_profile'
-- profile
名稱 ,
@recipients
=[email='[email protected]']'[email protected]'[/email]
-- 收件人郵箱
,@subject
='sql server 2005 mail
測試'--
郵件標題
,@body
='hello mail!
測試'--
郵件內容
,@body_format
='text'
-- 郵件格式
--6.
檢視郵件傳送情況:
usemsdb
goselect
*from
sysmail_allitems
select
*from
sysmail_mailitems
select
*from
sysmail_event_log
--如果不是以 sa
帳戶傳送郵件,則可能會出現錯誤:
----msg 229, level 14, state 5, procedure sp_send_dbmail, line 1
--execute permission denied on object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
----
這是因為,當前 sql server
登陸帳戶(login
),在 msdb
資料庫中沒有傳送資料庫郵件的許可權,需要加入 msdb
資料庫使用者,並通過加入 sp_addrolemember
角色賦予許可權。假設該sql server
登陸帳戶名字為 「dba」
----use msdb
--go
----create user dba for login dba
--go
----exec dbo.sp_addrolemember @rolename = 'databasemailuserrole',
-- @membername = 'dba'
--go
----
此時,再次傳送資料庫郵件,仍可能有錯誤:
----msg 14607, level 16, state 1, procedure sp_send_dbmail, line 119
--profile name is not valid
----
雖然,資料庫使用者 「dba」
已經在 msdb
中擁有傳送郵件的許可權了,但這還不夠,他還需要有使用 profile
:「dba_profile」
的許可權。
----use msdb
--go
----exec sysmail_add_principalprofile_sp @principal_name = 'dba'
-- ,@profile_name = 'dba_profile'
-- ,@is_default = 1
----
從上面的引數 @is_default=1
可以看出,乙個資料庫使用者可以在多個 mail profile
擁有傳送許可權。
SqlServer傳送郵件
每天上班。開啟電腦,總是先看看資料庫的運 況,看看日誌。於是就想利用是sqlserver自身的郵件系統,每天給自己定時發郵件,提高一點效率。sqlserver圖形化介面比較強大,配置傳送郵件也比較簡單 我是2012版 一 啟用database mail xps功能 a 檢視狀態 select nam...
sql server傳送郵件
declare mailprofilename nvarchar max declare mailto nvarchar max declare mailcc nvarchar max declare mailsubject nvarchar max declare mailbody nvarcha...
利用SQL Server傳送郵件
配置sql server 允許發郵件這裡有兩種方式一中是通過介面操作,一中是全 操作。兩種方式的結果是一樣的,使用者可以先通過 操作,在通過介面操作去檢視 1 操作 1.配置資料 exec sp configure show advanced options 1 reconfigure with o...