1、 背景php
數據庫發郵件通知數據庫的運行狀態(狀態能夠經過JOB形式獲取)和信息,達到預警的效果。html
2、 基礎知識sql
msdb系統數據庫保存有關Job,Database Mail,Nodifyication等等之類信息的。MSSQL2005以後的郵件功能,使用了Services Broker進行了隊列處理。而後使用外部進程,這個能夠在配置成功Mail之後查看任務管理器中的進程。數據庫
另外 sp_send_dbmail是手動發送郵件的存儲過程,咱們必須顯示的賦值才能發送。服務器
3、 圖形界面方式建立數據庫郵件測試
下面就以SSMS的圖形界面介紹如何建立數據庫郵件;this
(Figure1:數據庫郵件)spa
(Figure2:以步驟形式建立).net
(Figure3:建立配置文件名)3d
(Figure4:添加Email賬號)
這裏設置的Email信息是表示以後就以這個Email賬號發送郵件,這裏的服務器名稱填寫的是smtp.126.com,端口爲25,你須要經過下面的方式測試這個地址是否能夠訪問。若是不通有多是你機器防火牆的問題。
(Figure5:測試ping)
(Figure6:測試telnet)
(Figure7:配置文件與郵件對應關係)
這裏你能夠添加多個Email賬號,在失敗的時候會使用下一個用戶嘗試發送。
(Figure8:公共配置文件)
(Figure9:系統嘗試,不須要修改)
(Figure10:成功界面)
(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、 參考文獻
SQL Server:在 SQL Server 2005 中配置數據庫郵件,發送郵件
SQL Server Reporting Services一步步實現郵件訂閱