我有一些使用 sp_send_mail 发送电子邮件的自定义审核流程。我最近发现测试正在向每个人发送电子邮件,因为收件人地址被硬编码为变量值。我宁愿使用 Operator,这样我就不必更改从一个环境移动到下一个环境的代码。我用谷歌搜索过,但这似乎不是问题,除非我只是使用了错误的关键词。
使用 Operator 的正确 @recipients 值是什么,还是我应该一起使用不同的过程?
您肯定是在正确的轨道上,但您只需要根据操作员的名称检索操作员的电子邮件地址,如下所示:
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;
希望有帮助。
谢谢,这效果很好。我在一位操作员下有多个电子邮件地址,效果也很好。