完成備份資料庫後如何寄發通知至多個信箱

本文將介紹完成備份資料庫後如何寄發通知至多個信箱。

上一篇提到有關完成資料庫備份後透過 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 TRY
   7:      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 TRY
  11:  BEGIN CATCH
  12:      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

 

備份成功時所收到的郵件如下圖所示:

 

image

 

備份失敗時所收到的郵件如下圖所示:

 

image

 

【參考資料】