sp_setapprole (Transact-SQL)sp_setapprole (Transact-SQL)

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data Warehouse nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Active les autorisations associées à un rôle d'application dans la base de données active.Activates the permissions associated with an application role in the current database.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax


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

ArgumentsArguments

[ @rolename = ] 'rôle'[ @rolename = ] 'role'
Nom du rôle d'application défini dans la base de données active.Is the name of the application role defined in the current database. rôle est sysname, sans valeur par défaut.role is sysname, with no default. rôle doit exister dans la base de données actuelle.role must exist in the current database.

[ @password = ] {chiffrer N'mot de passe'}[ @password = ] { encrypt N'password' }
Mot de passe nécessaire pour activer le rôle d'application.Is the password required to activate the application role. mot de passe est sysname, sans valeur par défaut.password is sysname, with no default. mot de passe peut être obscurci à l’aide de ODBC chiffrer (fonction).password can be obfuscated by using the ODBC encrypt function. Lorsque vous utilisez la chiffrer (fonction), le mot de passe doit être converti en une chaîne Unicode en plaçant N avant le premier guillemet.When you use the encrypt function, the password must be converted to a Unicode string by placing N before the first quotation mark.

L’option encrypt n’est pas pris en charge sur les connexions qui sont à l’aide de SqlClient.The encrypt option is not supported on connections that are using SqlClient.

Important

ODBC chiffrer (fonction) ne fournit pas de chiffrement.The ODBC encrypt function does not provide encryption. Vous ne devez pas compter sur cette fonction pour protéger des mots de passe transmis sur un réseau.You should not rely on this function to protect passwords that are transmitted over a network. Si de telles informations doivent être transmises sur un réseau, utilisez SSL ou IPSec.If this information will be transmitted across a network, use SSL or IPSec.

@encrypt= 'none'@encrypt = 'none'
Indique qu'aucun codage ne doit être utilisé.Specifies that no obfuscation be used. Le mot de passe est transmis à SQL ServerSQL Server sous forme de texte brut.The password is passed to SQL ServerSQL Server as plain text. Il s'agit du paramètre par défaut.This is the default.

@encrypt= « odbc »@encrypt= 'odbc'
Spécifie que ODBC est obfusquer le mot de passe à l’aide de ODBC chiffrer fonction avant d’envoyer le mot de passe pour le Moteur de base de données SQL ServerSQL Server Database Engine.Specifies that ODBC will obfuscate the password by using the ODBC encrypt function before sending the password to the Moteur de base de données SQL ServerSQL Server Database Engine. Ceci peut être spécifié seulement si vous utilisez un client ODBC ou le fournisseur OLE DB pour SQL Server.This can be specified only when you are using either an ODBC client or the OLE DB Provider for SQL Server.

[ @fCreateCookie = ] true | false[ @fCreateCookie = ] true | false
Indique si un cookie doit être créé.Specifies whether a cookie is to be created. true est implicitement converti en 1.true is implicitly converted to 1. false est implicitement converti en 0.false is implicitly converted to 0.

[ @cookie = ] @cookie SORTIE[ @cookie = ] @cookie OUTPUT
Spécifie le paramètre de sortie qui doit contenir le cookie.Specifies an output parameter to contain the cookie. Le cookie est généré uniquement si la valeur de @fCreateCookie est true.The cookie is generated only if the value of @fCreateCookie is true. varbinary (8000)varbinary(8000)

Note

Le paramètre OUTPUT de cookie pour sp_setapprole est actuellement documenté comme varbinary(8000) , ce qui correspond à la longueur maximale correcte.The cookie OUTPUT parameter for sp_setapprole is currently documented as varbinary(8000) which is the correct maximum length. Cependant, l’implémentation actuelle retourne varbinary(50).However the current implementation returns varbinary(50). Les applications doivent continuer à réserver varbinary (8000) afin que l’application continue à fonctionner correctement si le cookie de taille de retour augmente dans une version ultérieure.Applications should continue to reserve varbinary(8000) so that the application continues to operate correctly if the cookie return size increases in a future release.

Valeurs des codes de retourReturn Code Values

0 (succès) et 1 (échec)0 (success) and 1 (failure)

NotesRemarks

Une fois qu’une application rôle est activé à l’aide de sp_setapprole, il demeure actif jusqu'à ce que l’utilisateur se déconnecte du serveur ou exécute sp_unsetapprole.After an application role is activated by using sp_setapprole, the role remains active until the user either disconnects from the server or executes sp_unsetapprole. sp_setapprole peuvent être exécutées directement par Transact-SQLTransact-SQL instructions.sp_setapprole can be executed only by direct Transact-SQLTransact-SQL statements. sp_setapprole ne peut pas être exécutée dans une autre procédure stockée ou dans une transaction définie par l’utilisateur.sp_setapprole cannot be executed within another stored procedure or within a user-defined transaction.

Pour une vue d’ensemble des rôles d’application, consultez les rôles d’Application.For an overview of application roles, see Application Roles.

Important

Pour protéger le mot de passe d'un rôle d'application lors de sa transmission sur un réseau, vous devez toujours utiliser une connexion chiffrée pour activer un rôle d'application.To protect the application role password when it is transmitted across a network, you should always use an encrypted connection when enabling an application role..

Le MicrosoftMicrosoft ODBC chiffrer option n’est pas pris en charge par SqlClient.The MicrosoftMicrosoft ODBC encrypt option is not supported by SqlClient. Si vous devez stocker des informations d'identification, chiffrez-les à l'aide des fonctions API de chiffrement.If you must store credentials, encrypt them with the crypto API functions. Le paramètre mot de passe est stocké comme un hachage unidirectionnel.The parameter password is stored as a one-way hash. Pour préserver la compatibilité avec les versions antérieures de SQL ServerSQL Server, stratégie de complexité de mot de passe n’est pas appliquée par sp_addapprole.To preserve compatibility with earlier versions of SQL ServerSQL Server, password complexity policy is not enforced by sp_addapprole. Pour appliquer la stratégie de complexité de mot de passe, utilisez CREATE APPLICATION ROLE.To enforce password complexity policy, use CREATE APPLICATION ROLE.

PermissionsPermissions

Nécessite l’appartenance au public et la connaissance du mot de passe pour le rôle.Requires membership in public and knowledge of the password for the role.

ExemplesExamples

A.A. Activation d'un rôle d'application sans l'option encryptActivating an application role without the encrypt option

Dans l'exemple ci-dessous, un rôle d'application nommé SalesAppRole est activé avec le mot de passe en texte brut AsDeF00MbXX, créé avec les autorisations spécialement conçues pour l'application utilisée par l'utilisateur en cours.The following example activates an application role named SalesAppRole, with the plain-text password AsDeF00MbXX, created with permissions specifically designed for the application used by the current user.

EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';  
GO  

Dans l'exemple ci-dessous, le rôle d'application Sales11 est activé avec le mot de passe fdsd896#gfdbfdkjgh700mM et un cookie est créé.The following example activates the Sales11 application role with password fdsd896#gfdbfdkjgh700mM, and creates a cookie. L'exemple retourne le nom de l'utilisateur actuel, puis revient au contexte d'origine en exécutant sp_unsetapprole.The example returns the name of the current user, and then reverts to the original context by executing 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   

Voir aussiSee Also

Procédures stockées système (Transact-SQL) System Stored Procedures (Transact-SQL)
Sécurité stockée procédures ( Transact-SQL ) Security Stored Procedures (Transact-SQL)
CRÉER un rôle d’APPLICATION ( Transact-SQL ) CREATE APPLICATION ROLE (Transact-SQL)
DROP APPLICATION ROLE ( Transact-SQL ) DROP APPLICATION ROLE (Transact-SQL)
sp_unsetapprole ( Transact-SQL )sp_unsetapprole (Transact-SQL)