sp_setapprole (Transact-SQL)

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

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_setapprole [ @rolename = ] 'role',
    [ @password = ] { encrypt N'password' } 
      |
        'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]
        [ , [ @fCreateCookie = ] true | false ]
    [ , [ @cookie = ] @cookie OUTPUT ]

Argumentos

  • [ @rolename = ] 'role'
    Es el nombre del rol de aplicación definido en la base de datos actual. role es de tipo sysname y no tiene valor predeterminado. role debe existir en la base de datos actual.

  • [ @password = ] { encrypt N'password' }
    Es la contraseña necesaria para activar el rol de aplicación. password es de tipo sysname y no tiene valor predeterminado. password se puede ofuscar mediante la función encrypt de ODBC. Si utiliza la función de encrypt, es necesario convertir la contraseña a una cadena Unicode mediante la colocación de N antes de la primera comilla.

    La opción de cifrado no se admite en las conexiones que utilizan SqlClient.

    Nota importanteImportante

    La función de encrypt de ODBC no proporciona cifrado. No debe confiar a esta función la protección de las contraseñas que se transmiten en una red. Si la información se va a transmitir en una red, utilice SSL o IPSec.

  • @encrypt = 'none'
    Especifica que no se utiliza ofuscación. La contraseña se pasa a SQL Server como texto simple. Éste es el valor predeterminado.

  • @encrypt= 'odbc'
    Especifica que ODBC ofuscará la contraseña mediante la función encrypt de ODBC antes de enviar la contraseña al Motor de base de datos de SQL Server. Solo se puede especificar cuando se utiliza un cliente ODBC o el Proveedor OLE DB para SQL Server.

  • [ @fCreateCookie = ] true | false
    Especifica si se va a crear una cookie. true se convierte implícitamente a 1. false se convierte implícitamente a 0.

  • [ @cookie = ] @cookie OUTPUT
    Especifica un parámetro de salida que contendrá la cookie. Solo se generará la cookie si el valor de @fCreateCookie es true. varbinary(8000)

    [!NOTA]

    El parámetro OUTPUT de la cookie para sp_setapprole está documentado actualmente como varbinary(8000), que es la longitud máxima correcta. Sin embargo, la implementación actual devuelve varbinary(50). Las aplicaciones deben seguir reservando varbinary(8000) para que la aplicación siga funcionando correctamente si el tamaño de retorno de la cookie aumenta en una versión futura.

Valores de código de retorno

0 (correcto) y 1 (error)

Comentarios

Tras la activación de un rol de aplicación mediante sp_setapprole, el rol permanece activo hasta que el usuario se desconecta del servidor o ejecuta sp_unsetapprole. sp_setapprole solo se puede ejecutar mediante instrucciones directas de Transact-SQL. sp_setapprole no se puede ejecutar dentro de otro procedimiento almacenado ni dentro de una transacción definida por el usuario.

Para obtener información general acerca de los roles de aplicación, vea Roles de aplicación.

Nota de seguridadNota de seguridad

Para proteger la contraseña del rol de aplicación cuando se transmite a través de una red, siempre debe usar una conexión cifrada al habilitar un rol de aplicación.

La opción encrypt de Microsoft ODBC no es compatible con SqlClient. Si debe almacenar las credenciales, cífrelas con las funciones de la API de cifrado. El parámetro password se almacena como un hash de un sentido. 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, utilice CREATE APPLICATION ROLE.

Permisos

Debe pertenecer a public y conocer la contraseña del rol.

Ejemplos

A.Activar un rol de aplicación sin la opción de cifrado

En este ejemplo se habilita un rol de aplicación denominado SalesAppRole, con la contraseña de texto simple AsDeF00MbXX, creado con permisos específicamente diseñados para la aplicación que utiliza el usuario actual.

EXEC 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 sp_setapprole 'Sales11', 'fdsd896#gfdbfdkjgh700mM'
    , @fCreateCookie = true, @cookie = @cookie OUTPUT;
-- The application role is now active.
SELECT USER_NAME();
-- This will return the name of the application role, Sales11.
EXEC sp_unsetapprole @cookie;
-- The application role is no longer active.
-- The original context has now been restored.
GO
SELECT USER_NAME();
-- This will return the name of the original user. 
GO 

Vea también

Referencia

Procedimientos almacenados del sistema (Transact-SQL)

Procedimientos almacenados de seguridad (Transact-SQL)

CREATE APPLICATION ROLE (Transact-SQL)

DROP APPLICATION ROLE (Transact-SQL)

sp_unsetapprole (Transact-SQL)