sp_setapprole (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Database

Activa los permisos asociados a un rol de aplicación en la base de datos actual.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_setapprole
    [ @rolename = ] N'rolename'
    , [ @password = ] N'password'
    [ , [ @encrypt = ] 'encrypt' ]
    [ , [ @fCreateCookie = ] fCreateCookie ]
    [ , [ @cookie = ] cookie OUTPUT ]
[ ; ]

Argumentos

[ @rolename = ] N'rolename'

Nombre del rol de aplicación definido en la base de datos actual. @rolename es sysname, sin ningún valor predeterminado. @rolename deben existir en la base de datos actual.

[ @password = ] { encrypt N'password' }

Contraseña necesaria para activar el rol de aplicación. @password es sysname, sin ningún valor predeterminado. @password se pueden ofuscar mediante la función ODBCencrypt. Cuando se usa la encrypt función , la contraseña debe convertirse en una cadena Unicode colocando N antes de la primera comilla.

La opción encrypt no se admite en las conexiones que usan SqlClient.

Importante

La función ODBC encrypt no proporciona cifrado. No debe confiar en esta función para proteger las contraseñas que se transmiten a través de una red. Si esta información se transmitirá a través de una red, use TLS o IPSec.

[ @encrypt = ] { 'none' | 'odbc' }

Especifica el tipo de cifrado antes de enviar la contraseña al Motor de base de datos de SQL Server. @encrypt es varchar(10) y puede ser uno de estos valores.

Valor Descripción
none (valor predeterminado) Especifica que no se usa ninguna ofuscación. La contraseña se pasa a SQL Server como texto sin formato.
odbc Especifica que ODBC ofusca la contraseña mediante la función ODBC encrypt antes de enviar la contraseña al Motor de base de datos de SQL Server. Este valor solo se puede especificar cuando se usa un cliente ODBC o el proveedor OLE DB para SQL Server.

[ @fCreateCookie = ] { 'true' | 'false' }

Especifica si se va a crear una cookie. @fCreateCookie es bit, con un valor predeterminado de 0.

true se convierte implícitamente en 1. false se convierte implícitamente en 0.

Especifica un parámetro de salida que contendrá la cookie. @cookie es un parámetro OUTPUT de tipo varbinary(8000). La cookie solo se genera si el valor de @fCreateCookie es true.

Nota:

Aunque la implementación actual devuelve varbinary(50), las aplicaciones deben reservar el varbinary(8000) documentado, de modo que la aplicación siga funcionando correctamente si el tamaño devuelto de la cookie aumenta en una versión futura.

Valores de código de retorno

0 (correcto) y 1 (error).

Comentarios

Después de activar un rol de aplicación mediante sp_setapprole, el rol permanece activo hasta que el usuario se desconecta sp_unsetapproledel servidor o ejecuta . No puede usar sp_setapprole dentro de otro procedimiento almacenado, desencadenador o dentro de una transacción definida por el usuario. Solo se puede ejecutar como instrucciones Transact-SQL directas.

Para obtener información general sobre los roles de aplicación, consulte Roles de aplicación.

Siempre debe usar una conexión cifrada al habilitar un rol de aplicación para proteger la contraseña del rol de aplicación al transmitirla a través de una red.

SqlClient no admite la opción ODBC encrypt de Microsoft. Si debe almacenar las credenciales, cífrelas con las funciones de la API de cifrado. El parámetro @password se almacena como un hash unidireccional. Para conservar la compatibilidad con versiones anteriores de SQL Server, sp_addapprole no aplica la directiva de complejidad de contraseñas. Para aplicar la directiva de complejidad de contraseñas, use CREATE APPLICATION ROLE.

Permisos

Requiere la pertenencia al público y el conocimiento de la contraseña para el rol.

Ejemplos

A Activación de un rol de aplicación sin la opción encrypt

En el ejemplo siguiente se activa un rol de aplicación denominado SalesAppRole, con la contraseña AsDeF00MbXXde texto sin formato , creada con permisos diseñados para la aplicación usada por el usuario actual.

EXEC sys.sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

En el siguiente ejemplo se habilita el rol de aplicación Sales11 con la contraseña fdsd896#gfdbfdkjgh700mM y se crea una cookie. En el ejemplo se devuelve el nombre del usuario actual y se revierte al contexto original ejecutando sp_unsetapprole.

DECLARE @cookie VARBINARY(8000);

EXEC sys.sp_setapprole 'Sales11',
    'fdsd896#gfdbfdkjgh700mM',
    @fCreateCookie = true,
    @cookie = @cookie OUTPUT;

El rol de aplicación ahora está activo. USER_NAME() devuelve el nombre del rol de aplicación, Sales11.

SELECT USER_NAME();

Desconjunte el rol de aplicación.

EXEC sys.sp_unsetapprole @cookie;
GO

El rol de aplicación ya no está activo. Se restaura el contexto original. USER_NAME() devuelve el nombre del usuario original.

SELECT USER_NAME();
GO