sysmail_update_account_sp (Transact-SQL)

更改现有数据库邮件帐户中的信息。

主题链接图标Transact-SQL 语法约定

语法

sysmail_update_account_sp [ [ @account_id = ] account_id ] [ , ] [ [ @account_name = ] 'account_name' ] ,
    [ @email_address = ] 'email_address' , 
    [ @display_name = ] 'display_name' , 
    [ @replyto_address = ] 'replyto_address' ,
    [ @description = ] 'description' , 
    [ @mailserver_name = ] 'server_name' , 
    [ @mailserver_type = ] 'server_type' , 
    [ @port = ] port_number , 
    [ @username = ] 'username' ,
    [ @password = ] 'password' ,
    [ @use_default_credentials = ] use_default_credentials ,
    [ @no_credential_change = ] changes to username and password ,
    [ @enable_ssl = ] enable_ssl 

参数

  • [ @account_id = ] account_id
    要更新的帐户的 ID。account_id 的数据类型为 int,默认值为 NULL。至少必须指定 account_id 或 account_name 中的一项。如果两个都指定,则过程将更改帐户的名称。

  • [ @account_name = ] 'account_name'
    要更新的帐户的名称。account_name 的数据类型为 sysname,默认值为 NULL。至少必须指定 account_id 或 account_name 中的一项。如果两个都指定,则过程将更改帐户的名称。

  • [ @email_address = ] 'email_address'
    发件人的新电子邮件地址。该地址必须是 Internet 电子邮件地址。该地址中的服务器名称就是数据库邮件用于从该帐户发送邮件的服务器。email_address 的数据类型为 nvarchar(128),默认值为 NULL。

  • [ @display_name = ] 'display_name'
    从该帐户发出的电子邮件中使用的新显示名称。display_name 的数据类型为 nvarchar(128),无默认值。

  • [ @replyto_address = ] 'replyto_address'
    从该帐户发出的电子邮件的答复标题中使用的新地址。replyto_address 的数据类型为 nvarchar(128),无默认值。

  • [ @description = ] 'description'
    对帐户的新说明。description 的数据类型为 nvarchar(256),默认值为 NULL。

  • [ @mailserver_name = ] 'server_name'
    该帐户要使用的 SMTP 邮件服务器的新名称。运行 SQL Server 的计算机必须能够将 server_name 解析为 IP 地址。server_name 的数据类型为 sysname,无默认值。

  • [ @mailserver_type = ] 'server_type'
    邮件服务器的新类型。server_type 的数据类型为 sysname,无默认值。对于 SQL Server 2005 和更高版本,仅支持“SMTP”值。

  • [ @port = ] port_number
    邮件服务器的新端口号。port_number 的数据类型为 int,无默认值。

  • [ @username = ] 'username'
    登录到邮件服务器时使用的新用户名。User name 的数据类型为 sysname,无默认值。

  • [ @password = ] 'password'
    登录邮件服务器时使用的新密码。password 的数据类型为 sysname,无默认值。

  • [ @use_default_credentials = ] use_default_credentials
    指定是否使用 SQL Server 数据库引擎服务的凭据将邮件发送到 SMTP 服务器。use_default_credentials 的数据类型为 bit,无默认值。当此参数为 1 时,数据库邮件使用数据库引擎的凭据。当此参数为 0 时,数据库邮件使用 @username@password 在 SMTP 服务器上进行身份验证。如果 @username@password 为 NULL,则它将使用匿名身份验证。在指定此参数之前,请洽询您的 SMTP 管理员

  • [ @no_credential_change = ] 更改用户名和密码
    指定是否要更改现有的凭据(用户名和密码)。当此参数为 1 时,它指示不更改凭据,即不需要提供 @username@password。当此参数为 0 时,它指示更改凭据,即必须提供 @username@password。此参数的数据类型为 bit,默认值为 0。

  • [ @enable_ssl = ] enable_ssl
    指定数据库邮件是否使用安全套接字层 (SSL) 对通信进行加密。如果 SMTP 服务器需要 SSL,则使用该选项。enable_ssl 的数据类型为 bit,无默认值。

返回代码值

0(成功)或 1(失败)

注释

如果同时指定了帐户名与帐户 ID,则存储过程不仅会更新帐户信息,还会更改帐户名。更改帐户名可能有助于纠正帐户名中的错误。

@no_credential_change 参数可用于更改除使用基本身份验证发送邮件的帐户的用户名和密码之外的任何内容。例如,您可以通过指定 @no_credential_change = 1 来使用 SSL,而无需提供用户名和密码。

存储过程 sysmail_update_account_sp 位于 msdb 数据库中,并由 dbo 架构拥有。如果当前数据库不是 msdb,则必须使用由三部分组成的名称来执行该过程。

权限

要求具有 sysadmin 固定服务器角色的成员身份。

示例

A. 更改帐户的信息

下面的示例更新了 msdb 数据库中的帐户 AdventureWorks Administrator。此帐户的信息被设置为提供的值。

EXECUTE msdb.dbo.sysmail_update_account_sp
    ,@account_name = 'AdventureWorks Administrator'
    ,@description = 'Mail account for administrative e-mail.'
    ,@email_address = 'dba@Adventure-Works.com'
    ,@display_name = 'AdventureWorks Automated Mailer'
    ,@replyto_address = NULL
    ,@mailserver_name = 'smtp.Adventure-Works.com'
    ,@mailserver_type = 'SMTP'
    ,@port = 25
    ,@username = NULL
    ,@password = NULL
    ,@use_default_credentials = 0
    ,@enable_ssl = 0;

B. 更改帐户名和帐户信息

下面的示例更改帐户 ID 为 125 的帐户名并更新了帐户信息。此帐户的新名称为 Backup Mail Server。

EXECUTE msdb.dbo.sysmail_update_account_sp
    ,@account_id = 125
    ,@account_name = 'Backup Mail Server'
    ,@description = 'Mail account for administrative e-mail.'
    ,@email_address = 'dba@Adventure-Works.com'
    ,@display_name = 'AdventureWorks Automated Mailer'
    ,@replyto_address = NULL
    ,@mailserver_name = 'smtp-backup.Adventure-Works.com'
    ,@mailserver_type = 'SMTP'
    ,@port = 25,
    ,@username = NULL
    ,@password = NULL
    ,@use_default_credentials = 0
    ,@enable_ssl = 0;

C. 使用 @no\_credential\_change 只更改某个帐户的 SSL

以下示例将更改该帐户 ID 125 的 SSL 设置。所有其他帐户信息保持不变。

EXECUTE msdb.dbo.sysmail_update_account_sp
    ,@account_id = 125
    ,@enable_ssl = 1
    ,@no_credential_change = 1;

如果未指定 @no\_credential\_change=1,则将 NULL 值赋给 @username@password,除非提供它们的值。

更改历史记录

更新的内容

向“语法”、“参数”和“备注”部分添加了有关新参数 @no_credential_change 的信息。

添加了使用新参数 @no_credential_chang 更改 SSL 设置的示例。