我有一个执行数据库备份的存储过程。因为我正在查看 SQL Server 2012 中的可用性组,所以我想利用该脚本中的 *sys.fn_hadr_backup_is_preferred_replica* 函数来测试脚本是否应该生成备份。
如果脚本是手动运行而不是作为计划的 SQL 代理作业的一部分,或者如果 SQL 代理作业是手动执行而不是通过计划执行,那么我希望作业失败并显示错误消息以允许用户看到由于不在首选副本上,备份未成功。如果作业按计划运行,那么我显然不希望它失败,因为它会产生错误并整天在不是首选副本的服务器上发送警报。
我不知道该怎么做的唯一一点是检查作业是按计划执行还是手动执行。这可能吗?
如果做不到这一点,有没有其他方法可以提醒用户脚本没有生成备份,同时不会导致计划任务失败并产生警报?
使用 Kenneth 的代码以及我整理的其他一些零碎的代码,我想出了以下代码,我认为它应该可以完成这项工作。如果有人对此有任何潜在问题,我会很想知道!
这是你的一个开始。
这应该为您提供所有当前正在运行的作业的列表以及启动该作业的源。
我认为没有必要过度复杂化。
只需测试它是否是首选副本,然后进行备份。