話說,那天開完會,經理交辦下來,讓我把備份不成功之信件自動寄到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~~楊老師果然厲害。
測試的結果:
結束。