為了方便查看定時(shí)任務(wù)執(zhí)行是否成功,同時(shí)能夠及時(shí)發(fā)現(xiàn)存儲(chǔ)過(guò)程中拋出的異常,,采用發(fā)送郵件的方式來(lái)提醒這些問(wèn)題,。
郵件設(shè)置
- 郵件服務(wù)器名稱:smtp.qq.com
- 端口號(hào):587
- 開(kāi)啟POP3/SMTP服務(wù),產(chǎn)生第三方客戶端授權(quán)碼
說(shuō)明
郵件采用QQ郵件,由于QQ郵件服務(wù)器要求安全鏈接(SSL),,因此采用587端口,,而不是25。具體設(shè)置如下:
步驟
1.進(jìn)入QQ郵箱,,找到設(shè)置>賬戶>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù)
2.開(kāi)啟POP3/SMTP服務(wù),,點(diǎn)擊“生成授權(quán)碼”,這會(huì)讓發(fā)送短信驗(yàn)證
3.保存生成的授權(quán)碼,,這是在第三方軟件上用的密碼
SQLServer數(shù)據(jù)庫(kù)配置
- 數(shù)據(jù)庫(kù)郵件配置
- SQLServer代理 警報(bào)系統(tǒng)配置
- 操作員配置
- Job配置
說(shuō)明
通過(guò)圖形界面配置郵件信息,,其實(shí)通過(guò)數(shù)據(jù)庫(kù)提供的存儲(chǔ)過(guò)程配置是一樣的,郵件所用到表在msdb庫(kù)中,,具體操作如下表:
序號(hào) |
表名稱 |
1 |
sysmail_account |
2 |
sysmail_attachments |
3 |
sysmail_attachments_transfer |
4 |
sysmail_configuration |
5 |
sysmail_log |
6 |
sysmail_mailitems |
7 |
sysmail_principalprofile |
8 |
sysmail_profile |
9 |
sysmail_profileaccount |
10 |
sysmail_query_transfer |
11 |
sysmail_send_retries |
12 |
sysmail_server |
13 |
sysmail_servertype |
步驟
一,、數(shù)據(jù)庫(kù)郵件配置
1.管理>數(shù)據(jù)庫(kù)郵件>郵件配置數(shù)據(jù)庫(kù)郵件
2.進(jìn)入配置向?qū)Вc(diǎn)擊下一步
如果為第一次配置,,就選擇第一選項(xiàng)就行,,在點(diǎn)擊下一步時(shí),會(huì)提示郵件沒(méi)有開(kāi)啟,,點(diǎn)擊確定開(kāi)啟,。
3.建立配置配件
配置文件可以建立多個(gè),需要配置每個(gè)配置文件名,,可以對(duì)配置文件進(jìn)行說(shuō)明,,點(diǎn)擊添加,添加SMTP賬戶
4.SMTP郵件賬戶配置完,,點(diǎn)擊確定
點(diǎn)擊下一步,,進(jìn)入到安全性配置,將公共復(fù)選框勾住,,作為默認(rèn)配置
點(diǎn)擊下一步
5.配置完成
二,、SQLServer代理 警報(bào)系統(tǒng)配置
1.開(kāi)啟服務(wù)代理
2.SQLServer代理,右鍵屬性>警報(bào)系統(tǒng)>郵件會(huì)話>啟用郵件配置文件,,選擇郵件系統(tǒng):數(shù)據(jù)庫(kù)郵件,,郵件配置文件:JobMonitorProfile(剛剛配置的)
3.點(diǎn)擊確定
4.重啟服務(wù)代理(一定要重啟)
三、操作員配置
1.開(kāi)啟服務(wù)代理
2.SQLServer代理>操作員>右鍵新建操作員>常規(guī)
Job配置
1.開(kāi)啟服務(wù)代理
2.SQLServer代理>作業(yè)>右鍵新建作業(yè)>通知,,勾選電子郵件,,選擇操作員,選擇作業(yè)完成,、失敗,、還是成功發(fā)送郵件
SQLServer 郵件代碼
下面為發(fā)送郵件的SQL,存儲(chǔ)過(guò)程異常數(shù)據(jù)通過(guò)begin try……end try begin catch……end catch 存儲(chǔ)到T_SYS_ExceptionLog表中,,然后通過(guò)定時(shí)檢索,,如果有異常就發(fā)送郵件,,代碼如下
create procedure [dbo].[proc_Sys_ExceptionSendEmail]
as
/********************************
--function:異常數(shù)據(jù)發(fā)送郵件
--author:zhujt
--create date:2016-12-2 10:25:41
*********************************/
begin
declare
@profileName varchar(100),
@Html varchar(max);
set @Html='<table style="border:1px solid;"><tr><th>日志操作類型</th><th>日志標(biāo)題</th><th>日志內(nèi)容</th><th>文件路徑</th><th>創(chuàng)建時(shí)間</th></tr>'+
(select
'tds'+case ExceptionType
when 1 then '數(shù)據(jù)定時(shí)生成'
when 2 then '數(shù)據(jù)操作'
end +'tde',
'tds'+ExceptionTitle+'tde',
'tds'+ExceptionMessage+'tde',
'tds'+Module+'tde',
'tds'+CONVERT(varchar(23),CreateDate,120)+'tde'
from T_SYS_ExceptionLog
where CreateDate>=CONVERT(varchar(10),DATEADD(DAY,-1,GETDATE()),120)+' 00:00:00'
FOR XML PATH('tr'), ELEMENTS
)
+'</table>';
select @profileName=name
from msdb.dbo.sysmail_profile x
where exists(select 1
from msdb.dbo.sysmail_principalprofile
where profile_id=x.profile_id
and is_default=0
);
if @profileName is not null and LEN(@profileName)>0 and @Html is not null and LEN(@Html)>0
begin
set @Html=REPLACE(REPLACE(@Html,'tds','<td>'),'tde','</td>');
set @Html='<style>table{border-right:1px solid;border-bottom:1px solid;}td,th{border-left:1px solid;border-top:1px solid;}</style>'+@Html;
exec msdb.dbo.sp_send_dbmail
@profile_name = @profileName,
@recipients = '[email protected]',
@subject = 'JobEmail',
@body = @Html,
@body_format = 'HTML';
end
end
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
|