sql server 傳送郵件

2021-06-07 02:06:19 字數 4081 閱讀 4582

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...