如何使用代理操作员而不是电子邮件地址通过 TSQL 发送电子邮件?

问题描述 投票:0回答:2

我有一些使用 sp_send_mail 发送电子邮件的自定义审核流程。我最近发现测试正在向每个人发送电子邮件,因为收件人地址被硬编码为变量值。我宁愿使用 Operator,这样我就不必更改从一个环境移动到下一个环境的代码。我用谷歌搜索过,但这似乎不是问题,除非我只是使用了错误的关键词。

使用 Operator 的正确 @recipients 值是什么,还是我应该一起使用不同的过程?

sql-server t-sql
2个回答
2
投票

您肯定是在正确的轨道上,但您只需要根据操作员的名称检索操作员的电子邮件地址,如下所示:

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;

希望有帮助。


0
投票

谢谢,这效果很好。我在一位操作员下有多个电子邮件地址,效果也很好。

© www.soinside.com 2019 - 2024. All rights reserved.