SQL Server 創建數據庫郵件


一、 背景

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

 

二、 基礎知識

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

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

 

三、 圖形界面方式創建數據庫郵件

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

wps_clip_image-8248

(Figure1:數據庫郵件)

wps_clip_image-16544

(Figure2:以步驟形式創建)

wps_clip_image-3040

(Figure3:創建配置文件名)

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:成功發送郵件)

 

四、 數據庫郵件相關腳本

--腳本創建數據庫郵件
--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

 

五、 參考文獻

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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM