Share via


sysmail_add_principalprofile_sp (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Concede permiso para que una msdb entidad de seguridad de base de datos use un perfil de Correo electrónico de base de datos. La entidad de seguridad de base de datos debe asignarse a un usuario de autenticación de SQL Server, a un usuario de Windows o a un grupo de Windows.

En Azure SQL Instancia administrada y SQL Server 2022 (16.x), la entidad de seguridad de base de datos también puede asignarse a un usuario de Microsoft Entra.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @principal_id = ] principal_id

Identificador del usuario o rol de la base de datos de la msdb base de datos para la asociación. @principal_id es int, con un valor predeterminado de NULL. Se deben especificar @principal_id o @principal_name . Un @principal_id de 0 convierte este perfil en un perfil público, concediéndole acceso a todas las entidades de seguridad de la base de datos.

[ @principal_name = ] 'principal_name'

Nombre del usuario o rol de la base de datos de la msdb base de datos para la asociación. @principal_name es sysname, con un valor predeterminado de NULL. Se deben especificar @principal_id o @principal_name . Un @principal_name de public convierte este perfil en un perfil público, concediéndole acceso a todas las entidades de seguridad de la base de datos.

[ @profile_id = ] profile_id

Identificador del perfil de la asociación. @profile_id es int, con un valor predeterminado de NULL. Se deben especificar @profile_id o @profile_name .

[ @profile_name = ] 'profile_name'

Nombre del perfil para la asociación. @profile_name es sysname, sin valor predeterminado. Se deben especificar @profile_id o @profile_name .

[ @is_default = ] is_default

Especifica si este perfil es el predeterminado para la entidad de seguridad. Una entidad de seguridad debe tener solo un perfil predeterminado. @is_default es bit, sin valor predeterminado.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

Para que un perfil sea público, especifique un @principal_id de 0 o un @principal_name de public. Un perfil público está disponible para todos los usuarios de la msdb base de datos, aunque los usuarios también deben ser miembros de DatabaseMailUserRole para ejecutar sp_send_dbmail.

Un usuario de base de datos solo puede tener un perfil predeterminado. Cuando @is_default es 1 y el usuario ya está asociado a uno o varios perfiles, el perfil especificado se convierte en el perfil predeterminado para el usuario. El perfil predeterminado anterior sigue estando asociado con el usuario, pero ya no es el perfil predeterminado.

Cuando @is_default es 0 y no existe ninguna otra asociación, el procedimiento almacenado devuelve un error.

El procedimiento sysmail_add_principalprofile_sp almacenado está en la msdb base de datos y es propiedad del dbo esquema. El procedimiento debe ejecutarse con un nombre de tres partes si la base de datos actual no msdbes .

Permisos

Este procedimiento almacenado es propiedad del rol db_owner . Puede conceder EXECUTE permisos para cualquier usuario, pero estos permisos se pueden invalidar durante una actualización de SQL Server.

Ejemplos

A Crear una asociación y establecer el perfil predeterminado

En el ejemplo siguiente se crea una asociación entre el perfil denominado AdventureWorks Administrator Profile y el usuario ApplicationUserde la msdb base de datos . El perfil es el predeterminado del usuario.

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

B. Convertir un perfil en el perfil público predeterminado

En el ejemplo siguiente se convierte el perfil AdventureWorks Public Profile en el perfil público predeterminado para los usuarios de la msdb base de datos.

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