【发布时间】:2020-01-31 03:40:46
【问题描述】:
我在 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
它成功了,我收到了一封电子邮件。
谁能看出我哪里出错了?
【问题讨论】:
-
显然
IF条件返回FALSE。检查exists查询 -
我在
if exists语句中手动运行了选择查询,它为找到的每条记录返回一个1(目前有六个这样的记录)。 -
您是否在与
SQL Server Agent相同的安全上下文中运行它? -
我已将作业的所有者设置为与相关数据库的所有者相同,这是我用来手动运行存在查询的帐户。如果它无法读取表格,我不会出错吗?
标签: sql-server exists