SQL Server 建立數據庫郵件

1、 背景php

  數據庫發郵件通知數據庫的運行狀態(狀態能夠經過JOB形式獲取)和信息,達到預警的效果。html

 

2、 基礎知識sql

  msdb系統數據庫保存有關Job,Database Mail,Nodifyication等等之類信息的。MSSQL2005以後的郵件功能,使用了Services Broker進行了隊列處理。而後使用外部進程,這個能夠在配置成功Mail之後查看任務管理器中的進程。數據庫

  另外 sp_send_dbmail是手動發送郵件的存儲過程,咱們必須顯示的賦值才能發送。服務器

 

3、 圖形界面方式建立數據庫郵件測試

下面就以SSMS的圖形界面介紹如何建立數據庫郵件;this

wps_clip_image-8248

(Figure1:數據庫郵件)spa

wps_clip_image-16544

(Figure2:以步驟形式建立).net

wps_clip_image-3040

(Figure3:建立配置文件名)3d

wps_clip_image-1195

(Figure4:添加Email賬號)

這裏設置的Email信息是表示以後就以這個Email賬號發送郵件,這裏的服務器名稱填寫的是smtp.126.com,端口爲25,你須要經過下面的方式測試這個地址是否能夠訪問。若是不通有多是你機器防火牆的問題。

wps_clip_image-10970

(Figure5:測試ping)

wps_clip_image-26121

(Figure6:測試telnet)

wps_clip_image-19701

(Figure7:配置文件與郵件對應關係)

這裏你能夠添加多個Email賬號,在失敗的時候會使用下一個用戶嘗試發送。

wps_clip_image-10676

(Figure8:公共配置文件)

wps_clip_image-3616

(Figure9:系統嘗試,不須要修改)

wps_clip_image-9040

(Figure10:成功界面)

wps_clip_image-17687

(Figure11:成功發送郵件)

 

4、 數據庫郵件相關腳本

--腳本建立數據庫郵件
--1.開啓數據庫郵件
EXEC sp_configure 'show advanced options',1
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'database mail xps',1
RECONFIGURE WITH OVERRIDE
GO

--2.建立郵件賬戶信息
EXEC  msdb..sysmail_add_account_sp
      @ACCOUNT_NAME ='ETLErrorMailLog',--郵件賬戶名稱
      @EMAIL_ADDRESS ='******@126.com',--發件人郵件地址
      @DISPLAY_NAME ='系統管理員',--發件人姓名
      @REPLYTO_ADDRESS =NULL,
      @DESCRIPTION = NULL,
      @MAILSERVER_NAME = 'SMTP.126.COM',--郵件服務器地址
      @MAILSERVER_TYPE = 'SMTP',--郵件協議
      @PORT =25,--郵件服務器端口
      @USERNAME = '******@126.com',--用戶名
      @PASSWORD = '******',--密碼
      @USE_DEFAULT_CREDENTIALS =0,
      @ENABLE_SSL =0,
      @ACCOUNT_ID = NULL
GO

--3.數據庫配置文件
IF EXISTS(SELECT name FROM msdb..sysmail_profile WHERE name=N'ETLErrorProfileLog')
BEGIN
    EXEC msdb..sysmail_delete_profile_sp
    @profile_name='ETLErrorProfileLog'
END

EXEC msdb..sysmail_add_profile_sp
    @profile_name = 'ETLErrorProfileLog',--profile名稱
    @description = '數據庫郵件配置文件',--profile描述
    @profile_id = null
GO

--4.用戶和郵件配置文件相關聯
EXEC msdb..sysmail_add_profileaccount_sp
    @profile_name = 'ETLErrorProfileLog',--profile名稱
    @account_name = 'ETLErrorMailLog',--account名稱
    @sequence_number = 1--account 在profile 中順序
GO

--5.1發送簡單文本的郵件
EXEC msdb..sp_send_dbmail
    @profile_name = 'ETLErrorProfileLog',--profile名稱
    @recipients = '******@qq.com',--收件人
    @subject = 'Test title this is test ',--郵件標題
    @body = N'數據庫郵件測試',--郵件內容
    @body_format = 'HTML'--郵件格式
GO

--5.2發送包含查詢的郵件
EXEC msdb..sp_send_dbmail
    @profile_name = 'ETLErrorProfileLog',
    @recipients = '******@qq.com',
    @subject = '查詢結果',
    @query = 'SELECT * FROM msdb.dbo.sysmail_faileditems'
GO

--5.2發送包含附件的郵件
EXEC msdb..sp_send_dbmail
    @profile_name = 'ETLErrorProfileLog',
    @recipients = '******@qq.com',
    @subject = '包含附件',
    @body = '有附件,請查收',
    @file_attachments = 'c:\a.txt'
GO

--5.3發送查詢做爲附件的郵件
EXEC msdb..sp_send_dbmail
    @profile_name = 'ETLErrorProfileLog',
    @recipients = '******@qq.com',
    @subject = '查詢結果',
    @body = '查詢結果在附件中',
    @query = 'SELECT * FROM msdb.dbo.sysmail_faileditems',
    @attach_query_result_as_file = 1,
    @query_attachment_filename = 'a.txt'
GO

 

5、 參考文獻

MSSQL數據庫郵件系列二(SSMS和TSQL)

SQL Server:在 SQL Server 2005 中配置數據庫郵件,發送郵件

SQL Server Reporting Services一步步實現郵件訂閱

利用SQL SERVER2005發送郵件

SQL Server 監控系列 —— 一

祥解使用 SQL Server 2005/2008 發送數據庫郵件

巧妙SQL Server設置 備份狀態郵件通知

數據庫郵件

數據庫郵件消息處理對象

sp_send_dbmail (Transact-SQL)

相關文章
相關標籤/搜索