我正在使用此版本的 SQL Server。
Microsoft SQL Server 2016 (SP2-CU12) (KB4536648) - 13.0.5698.0 (X64) Feb 15 2020 01:47:30 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: )
这听起来可能违反直觉,但我希望我的一些工作在失败时不要发送电子邮件。
我有一个非常繁忙的服务器,当它们与其他进程陷入僵局时,一些作业会失败。我对此很好,只要大部分时间工作都能成功。
我收到了太多关于工作失败的电子邮件,所以我给自己做了一份报告,告诉我昨天失败的工作,以及它们失败的次数。
SET QUOTED_IDENTIFIER ON;
declare @Today date, @Yesterday varchar(8)
select @Today = GETDATE()
select @Yesterday = REPLACE(CONVERT(VARCHAR(10),DATEADD(day, -1, @Today),121),'-','')
;With failedJobs as
(
select job_id, step_id, COUNT(*) as Occurrences
from msdb.dbo.sysjobhistory
where run_date>=@Yesterday and run_status=0
group by job_id, step_id
)
SELECT j.name,fj.Occurrences,MAX(fj.step_id) as LastSteap
from msdb.dbo.sysjobs j
join failedJobs fj on fj.job_id=j.job_id
group by j.name, fj.Occurrences
我的问题是,即使我取消选中 SSMS 中的通知,当工作死锁时我仍然会收到电子邮件。
知道我需要禁用什么吗?我需要禁用故障安全操作员吗?如果可能的话,我想避免这种情况。
与本文类似,您可能为错误 1205(死锁)设置了单独的警报。展开 SQL Server Agent 下的 alert 文件夹,看看有没有。
如果没有,并且您实际上收到有关所有作业失败的消息(如果具体死锁,则不清楚问题),您可以通过创建一个新作业_Test来测试这一点,它只是做一些旨在失败的事情,例如
SELECT 1/0
. 运行它,看看你是否以某种方式从其他东西那里得到了工作失败的消息。如果你这样做了,那么你必须去寻找那东西是什么。