Как вы отправляете электронную почту с помощью TSQL, используя оператор оператора вместо адреса электронной почты? - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть несколько пользовательских процессов аудита, которые отправляют электронные письма с sp_send_mail.Недавно я обнаружил, что тестирование отправляло всем электронные письма, потому что адрес получателя был жестко закодирован как значение переменной.Я бы предпочел использовать Оператор, поэтому мне не нужно изменять код, перемещаясь из одной среды в другую.Я погуглил, но, похоже, это не так, если я просто использую неправильные ключевые слова.

Какое значение @recipients нужно использовать для Оператора, или я должен использовать другой процесс вместе?

1 Ответ

1 голос
/ 19 сентября 2019

Вы определенно на правильном пути, но вам просто нужно получить адрес электронной почты оператора, основанный на имени оператора, как это:

DECLARE @OperatorName sysname = N'OnCallDBAs';

DECLARE @OperatorEmailAddress nvarchar(100) 
    = (SELECT email_address 
       FROM msdb.dbo.sysoperators
       WHERE [name] = @OperatorName);

IF @OperatorEmailAddress IS NOT NULL
BEGIN
    EXEC msdb.dbo.sp_send_dbmail  
        @profile_name = 'Adventure Works Administrator',  
        @recipients = @OperatorEmailAddress,  
        @body = 'The stored procedure finished successfully.',  
        @subject = 'Automated Success Message';
END;

Надеюсь, что поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...