我正在阅读谁在备份该数据库?由 Kendra little 撰写,特别是“如果备份成功,您可以尝试另一个技巧”部分。
我一直在研究监控我的数据库,以便在数据库备份到我的备份路径之外的另一个位置时发送电子邮件。到目前为止,我想出的是设置一个每 5 分钟触发一次的作业,其中包含以下脚本:
BEGIN
IF (SELECT COUNT (bmf.physical_device_name)
FROM [msdb].[dbo].[backupset] bs inner join [msdb].[dbo].[backupmediafamily] bmf
on bs.media_set_id = bmf.media_set_id
where bs.[database_name] = 'logbackuptest'
and bmf.physical_device_name not like 'D:\backups\%') > 0
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DBA Profile',
@recipients = '[email protected]',
@body = 'The database was backed up to a different location',
@subject = 'A database was backed up to a different location' ;
END
还有其他人有好的博客文章或任何其他想法吗?我不会在我不知情的情况下在非默认位置进行备份;这个问题纯粹是学术性的。
您可以使用BackupRestore Event Notification 来监视备份事件,此解决方案甚至适用于 Sql Express(Sql 代理不存在)。此链接向您展示了如何为 SQL Server Express 设置 SQL Mail。
我创建了一个名为 Test 的数据库。
我从跟踪自动增长的 Jonathan Kehayias 修改了这个示例,改为审计备份/恢复事件。
这是我从乔纳森的例子中调整而来的例子:
然后我调整了他使用事件的示例存储过程。
确保将存储过程中的这一行更改为您的电子邮件地址
@recipients = '你的邮箱地址'
然后,我运行了一个简单的备份
大约一分钟后,我收到了包含事件数据的电子邮件。您可以修改使用事件的存储过程以捕获您需要的任何信息并在电子邮件中发送该信息。