首页 > 解决方案 > SQL Server 代理作业步骤 - 如果存在不评估

问题描述

我已经在 SQL Server 2016 中设置了一个工作来监视一个表并通过电子邮件通知是否存在某些数据。

IF EXISTS (SELECT 1 FROM NPS_Logging.dbo.accounting_data WHERE "NP_Policy_Name" LIKE 'VPN%' AND "timestamp" > DATEADD(day,-1,CURRENT_TIMESTAMP))
BEGIN
 send email (won't bother showing full commands as they work as mentioned below)
END

当我测试工作时,我没有收到电子邮件。

我认为if exists没有评估(我知道现在应该)所以我手动运行SELECT 1...查询并返回 1。

然后我认为发送电子邮件已损坏,因此我将其放在开始/结束之外并进行了测试。

if exists (SELECT 1 ...
BEGIN
END
send email

它奏效了,我收到了一封电子邮件。

谁能看到我可能哪里出错了?

标签: sql-serverexists

解决方案


删除引号:

如果存在(从 NPS_Logging.dbo.accounting_data 中选择 1,其中 NP_Policy_Name LIKE 'VPN%' AND timestamp > DATEADD(day,-1,CURRENT_TIMESTAMP))开始发送电子邮件(不会费心显示完整的命令,因为它们的工作原理如下所述)END

就个人而言,当我做这种事情时,我喜欢检索记录数而不是使用 IF EXISTS ...我经常在电子邮件的正文或主题中使用记录。


推荐阅读