本文將介紹完成備份資料庫後如何寄發通知至多個信箱。
在上一篇提到有關完成資料庫備份後透過 sp_notify_operator 預存程序寄發 E-Mail 通知管理員,有網友提到希望可以設定通知信可以自行決定要寄到那些信箱,看來並不適合利用 Operator 的方式來做郵件通知,因為這種做法必須事先設定好 Operator 才能透過 Operator Profiler Name 來指定要寄給誰。筆者想到或許可以利用 sp_send_dbmail 預存程序來寄送通知,做法如下:
- 設定 Database Mail Profile(請參考SQL Server 2012 RC0 Database Mail簡介一文)。
- 利用 sp_sned_dbmail 來寄發備份結果的通知給特定收件者。若要同時寄給多個收件者,可在 @recipients 參數中輸入多個 E-Mail 位址,中間利用分號隔開即可,您也可以利用 @copy_recipients 寄送郵件副本,或利用 @blind_copy_recipients 寄送密件副本。
1: DECLARE @BackupFile varchar(50)2: DECLARE @DBName varchar(10) = 'Northwind'3: DECLARE @BackupPath varchar(50) = 'F:\BAK\'4: SET @BackupFile = @DBName + CONVERT(char(8),GETDATE(),112) + '.bak'5:
6: BEGIN TRY7: EXEC ('BACKUP DATABASE ' + @DBName + ' TO DISK = ''' + @BackupPath + @BackupFile + '''')8: EXEC msdb.dbo.sp_send_dbmail @profile_name = 'MyProfile',@subject = '資料庫備份'9: , @body = '備份成功',@importance = N'Normal',@recipients = 'user1@mail.com.tw;user2@mail.com.tw'10: END TRY11: BEGIN CATCH12: EXEC msdb.dbo.sp_send_dbmail @profile_name = 'MyProfile',@subject = '資料庫備份'13: , @body = '備份失敗',@importance = 'High',@recipients = 'user1@mail.com.tw;user2@mail.com.tw'14: END CATCH
備份成功時所收到的郵件如下圖所示:
備份失敗時所收到的郵件如下圖所示:
【參考資料】