sysmail_add_principalprofile_sp (Transact-SQL)

向数据库用户或角色授予使用数据库邮件配置文件的权限。

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

语法

sysmail_add_principalprofile_sp  { [ @principal_id = ] principal_id | [ @principal_name = ] 'principal_name' } ,
    { [ @profile_id = ] profile_id | [ @profile_name = ] 'profile_name' }
    [ , [ @is_default ] = 'is_default' ]

参数

  • [ @principal_id = ] principal_id
    关联的 msdb 数据库中数据库用户或角色的 ID。principal_id 的数据类型为 int,默认值为 NULL。必须指定 principal_id 或 principal_name。当 principal_id 为 0 时,该配置文件将成为公共配置文件,并将访问权限授予数据库中的所有主体。

  • [ @principal_name = ] 'principal_name'
    关联的 msdb 数据库中数据库用户或角色的名称。principal_name 的数据类型为 sysname,默认值为 NULL。必须指定 principal_id 或 principal_name。当 principal_name 为 'public' 时,会使该配置文件成为公共配置文件,并将访问权限授予数据库中的所有主体。

  • [ @profile_id = ] profile_id
    关联的配置文件的 ID。profile_id 的数据类型为 int,默认值为 NULL。必须指定 profile_id 或 profile_name。

  • [ @profile_name = ] 'profile_name'
    关联的配置文件的名称。profile_name 的数据类型为 sysname,无默认值。必须指定 profile_id 或 profile_name。

  • [ @is_default = ] is_default
    指定配置文件是否为主体数据库的默认配置文件。主体必须且只能有一个默认配置文件。is_default 的数据类型为 bit,无默认值。

返回代码值

0(成功)或 1(失败)

注释

若要将配置文件设置为公共配置文件,请将 @principal_id 指定为 0,或将 @principal_name 指定为 public。公共配置文件可供 msdb 数据库中的所有用户使用,但是用户必须是 DatabaseMailUserRole 的成员才可以执行 sp_send_dbmail

数据库用户只能有一个默认的配置文件。当 @is_default1,且用户已经与一个或多个配置文件关联时,指定的配置文件将成为该用户的默认配置文件。以前的默认配置文件仍与该用户关联,但不再是默认配置文件。

@is_default0 且不存在其他关联时,存储过程将返回错误。

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

权限

默认情况下,sysadmin 固定服务器角色的成员拥有执行此过程的权限。

示例

A. 创建一个关联,设置默认配置文件

以下示例在名为 AdventureWorks Administrator Profile 的配置文件与 msdb 数据库用户 ApplicationUser 之间创建一个关联。此配置文件是该用户的默认配置文件。

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @principal_name = 'ApplicationUser',
    @profile_name = 'AdventureWorks Administrator Profile',
    @is_default = 1 ;

B. 将配置文件设置为默认的公共配置文件

以下示例将配置文件 AdventureWorks Public Profile 设置为 msdb 数据库中的用户的默认公共配置文件。

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @principal_name = 'public',
    @profile_name = 'AdventureWorks Public Profile',
    @is_default = 1 ;