sysmail_add_principalprofile_sp(Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

授予数据库主体使用数据库邮件配置文件的权限msdb。 数据库主体必须映射到 SQL Server 身份验证用户、Windows 用户或 Windows 组。

在 Azure SQL 托管实例 和 SQL Server 2022(16.x)中,数据库主体还可以映射到 Microsoft Entra 用户。

Transact-SQL 语法约定

语法

dbo.sysmail_add_principalprofile_sp
    { [ @principal_id = ] principal_id
        | [ @principal_name = ] N'principal_name' }
    , { [ @profile_id = ] profile_id
        | [ @profile_name = ] N'profile_name' }
    , [ @is_default = ] is_default
[ ; ]

参数

[ @principal_id = ] principal_id

关联的数据库中数据库用户或角色 msdb 的 ID。 @principal_id为 intNULL. 必须指定@principal_id@principal_name0使此配置文件成为公共配置文件,授予对数据库中所有主体的访问权限。

[ @principal_name = ] N'principal_name'

关联数据库中的数据库用户或角色 msdb 的名称。 @principal_name为 sysname,默认值为 NULL. 必须指定@principal_id@principal_namepublic使此配置文件成为公共配置文件,授予对数据库中所有主体的访问权限。

[ @profile_id = ] profile_id

关联的配置文件的 ID。 @profile_id为 intNULL. 必须指定@profile_id@profile_name

[ @profile_name = ] N'profile_name'

关联的配置文件的名称。 @profile_namesysname,无默认值。 必须指定@profile_id@profile_name

[ @is_default = ] is_default

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

返回代码值

0(成功)或 1(失败)。

注解

若要公开配置文件,请指定@principal_id0@principal_namepublic。 公共配置文件可供数据库中的所有用户msdb使用,但用户还必须是要执行的 DatabaseMailUserRolesp_send_dbmail

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

当@is_default0,存储过程将返回错误。

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

权限

可以授予 EXECUTE 此过程的权限,但在 SQL Server 升级期间可能会重写这些权限。

示例

A. 创建关联并设置默认配置文件

以下示例在命名配置文件 AdventureWorks Administrator Profilemsdb 数据库用户 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;