noj*_*lag 9 sql-server-2012 database-mail
我在 sql 代理上配置了几个邮件配置文件,如何选择这些配置文件中的哪些用于发送特定 sql 代理作业的通知?
小智 8
对于 SQL 代理作业,数据库邮件配置文件的工作方式略有不同。在通过属性窗口配置 SQL 代理本身时,您将配置警报系统。

两个箭头指向可以选择数据库邮件配置文件的位置。在这两种情况下,您选择的配置文件基本上是告诉 SQL 代理这是您的 SMTP 配置以及您将向谁发送电子邮件“作为”或“发件人”字段。配置警报系统确实需要重新启动 SQL 代理服务。
完成此操作后,您将需要配置Operators以接收 SQL 代理作业的通知。

您可以设置操作员以记录您希望将通知发送到“收件人”的人。您可以在此字段中输入多个电子邮件地址,但它确实有字符限制。您可以创建多个操作员,但在作业属性的通知页面中,您会注意到它只允许您选择一个。这只是 SQL Agent 的限制。
对此的替代方法是sp_send_db_mail在作业步骤本身中使用 。在这种情况下,您可以使用任何您想要的邮件配置文件,如果您希望将其发送给您可能已配置的任何运营商以外的其他人。
您可以指定profile_nameinsp_send_dbmail如下:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'here goes your profile name'
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅BOL。
您可以使用sysmail_help_profileaccount_sp列出与一个或多个数据库邮件配置文件关联的帐户
以下是将为您提供所有详细信息的 t-sql:
SELECT [sa].[account_id]
, [sa].[name] as [Profile_Name]
, [sa].[description]
, [sa].[email_address]
, [sa].[display_name]
, [sa].[replyto_address]
, [ss].[servertype]
, [ss].[servername]
, [ss].[port]
, [ss].[username]
, [ss].[use_default_credentials]
, [ss].[enable_ssl]
FROM
msdb.dbo.sysmail_account sa
INNER JOIN msdb.dbo.sysmail_server ss
ON sa.account_id = ss.account_id
Run Code Online (Sandbox Code Playgroud)