1. 程式人生 > >SQL Server 建立資料庫郵件

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

五、 參考文獻

資料庫郵件