sp_unsetapprole (Transact-SQL)
S'applique à : SQL Server
Désactive un rôle d'application et revient au contexte de sécurité antérieur.
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_unsetapprole [ @cookie = ] cookie
[ ; ]
Arguments
[ @cookie = ] cookie
Spécifie le cookie créé lors de l'activation du rôle d'application. @cookie est varbinary(8000), sans valeur par défaut. Le cookie est créé par sp_setapprole.
Remarque
Le paramètre de cookie OUTPUT
pour sp_setapprole
lequel il est actuellement documenté sous forme de varbinary(8000) est la longueur maximale correcte. Cependant, l’implémentation actuelle retourne varbinary(50) . Les applications doivent continuer à réserver varbinary(8000) afin que l’application continue de fonctionner correctement si la taille de retour du cookie augmente dans une version ultérieure.
Valeurs des codes de retour
0 (succès) et 1 (échec)
Notes
Une fois qu’un rôle d’application est activé à l’aide sp_setapprole
, le rôle reste actif jusqu’à ce que l’utilisateur se déconnecte du serveur ou s’exécute sp_unsetapprole
.
Pour obtenir une vue d’ensemble des rôles d’application, consultez Rôles d’application.
autorisations
Nécessite l’appartenance au public et à la connaissance du cookie enregistré lorsque le rôle d’application a été activé.
Exemples
Activer un rôle d’application avec un cookie, puis revenir au contexte précédent
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éé. L'exemple retourne le nom de l'utilisateur actuel, puis revient au contexte d'origine en exécutant 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();
-- 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
-- Return the name of the original user.
SELECT USER_NAME();
GO