SQL Шаг задания агента сервера - если существует, не выполняется оценка - PullRequest
0 голосов
/ 31 января 2020

Я настроил задание в 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

И это сработало, я получил электронное письмо.

Может кто-нибудь увидеть, где я ошибся?

1 Ответ

0 голосов
/ 31 января 2020

Удалить кавычки:

ЕСЛИ СУЩЕСТВУЕТ (ВЫБЕРИТЕ 1 ИЗ NPS_Logging.dbo.accounting_data WHERE NP_Policy_Name LIKE 'VPN%' И отметка времени> DATEADD (день, -1, CURRENT_TIMESTAMP)) НАЧАЛО отправлять электронную почту (победил) не надо показывать полные команды, так как они работают, как указано ниже) END

Лично, когда я делаю такие вещи, мне нравится получать количество записей вместо использования IF EXISTS ... Я часто использую записи в тело или тема письма.

...