如何在 SQL Server (T-SQL) 中的配置文件中更改数据库邮件帐户的序列号

发布于

如果已将数据库邮件帐户添加到配置文件,但现在想要更改序列号,则可以使用存储过程执行此操作。sysmail_update_profileaccount_sp

执行此操作时,您需要提供帐户和配置文件的名称或 ID。这是因为您需要准确指定要更新的配置文件/帐户关联。

示例

下面是一个演示示例:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp  
    @profile_name = 'DB Admin Profile',
    @account_name = 'DB Admin',
    @sequence_number = 2;

此示例更改名为“数据库管理员配置文件”的配置文件中名为“数据库管理员”的帐户的序列号。

在本例中,我已将序列号更改为 2,这意味着“DB Admin”帐户仅在第一个帐户失败时使用。

使用配置文件/帐户 ID

在此示例中,我使用配置文件和帐户 ID 而不是它们的名称:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp  
    @profile_id = 1,
    @account_id = 1,
    @sequence_number = 3;

使用 ID 和名称的组合

您也可以提供一个 ID 和另一个的名称。

例如:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp 
    @profile_name = 'DB Admin Profile',
    @account_id = 1,
    @sequence_number = 4;

或者反过来:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp
    @profile_id = 1,
    @account_name = 'DB Admin',
    @sequence_number = 1;

序列号如何工作?

可以将多个帐户添加到数据库邮件配置文件。序列号确定发送邮件时在配置文件中使用这些帐户的顺序。数据库邮件从序列号最小的帐户开始。如果该帐户失败,则使用序列号下一个最高的帐户,依此类推。

如果存在多个具有相同序列号的帐户,则数据库邮件将仅对给定电子邮件使用其中一个帐户。

但是,无法保证同一帐户将用于后续消息。例如,如果两个帐户共享序列号 1,则您可能会收到来自一个帐户的一些电子邮件和来自另一个帐户的一些电子邮件。

我应该指出,根据这篇 Microsoft 文章,当您发送新电子邮件时,数据库邮件实际上从成功发送邮件的最后一个帐户开始,或者如果尚未发送任何邮件,则从序列号最低的帐户开始。

它以成功发送消息的最后一个帐户开头的事实在 or 的官方文档中未提及。sysmail_add_profileaccount_spsysmail_update_profileaccount_sp

无论哪种方式,这都是需要注意的事情,如果您的数据库邮件似乎忽略了您的序列号,它可能会使您免于扯头发。

存储过程的位置

请注意,存储过程位于数据库中,并且由架构拥有。因此,如果从数据库外部执行,则需要使用三部分命名。sysmail_update_profileaccount_sp``msdb``dbo``msdb

如何返回帐户和个人资料信息

以下文章提供了有关返回帐户和个人资料信息的说明。