log01  

 

話說,那天開完會,經理交辦下來,讓我把備份不成功之信件自動寄到SE的每個同仁信箱中。

故事是這麼開始的,公司的原始碼管理是由power tools所作備份的,

而power tools裡,並沒有可設定當任務失敗可以發信的功能,

而唯一能知道會失敗只能查看SQL Server的記錄檔,而要達到此發mail的功能,

我立即想到楊志強老師教的那段寄mail的語法

exec msdb.dbo.sp_send_dbmail @profile_name='SQL-DBA',
@recipients='123@gmail.com.tw;ARI_SE@gmail.com',
@subject='SQL Server 作業系統-TFS備份作業',
@body='今日TFS備份失敗,請同步'
go

剩下的,就是怎麼查看log中,其若發生error字樣,就發mail,

於是上網查到此好用之語法--OPENROWSET

簡單來說,用OPENROWSET去load進記錄檔的內容,

再去判斷此內容是否有error字樣or空間不足字樣

(本公司有發生過空間不足而導致備份失敗)

語法如下:

if exists(
SELECT *
FROM OPENROWSET(
'SQLNCLI',
'Server=.;Trusted_Connection=Yes;',
'set fmtonly off;EXEC sys.xp_readerrorlog 0')
where TEXT Like 'error%' or text like '%空間不足%'
)

 

將兩個語法合併就好啦~~oh~~楊老師果然厲害。

測試的結果:

mail  

結束。

arrow
arrow

    在史瓦的生活記錄 發表在 痞客邦 留言(1) 人氣()