sp_unsetapprole (Transact-SQL)
Gilt für: SQL Server
Deaktiviert eine Anwendungsrolle und setzt den Sicherheitskontext auf den vorherigen Kontext zurück.
Transact-SQL-Syntaxkonventionen
Syntax
sp_unsetapprole [ @cookie = ] cookie
[ ; ]
Argumente
[ @cookie = ] Cookie
Gibt das Cookie an, das beim Aktivieren der Anwendungsrolle erstellt wurde. @cookie ist varbinary(8000), ohne Standard. Das Cookie wird von sp_setapprole erstellt.
Hinweis
Der Cookie-Parameter OUTPUT
für sp_setapprole
ist derzeit als varbinary(8000) dokumentiert, bei dem es sich um die richtige maximale Länge handelt. Die aktuelle Implementierung gibt jedoch varbinary(50) zurück. Anwendungen müssen weiterhin varbinary(8000) reservieren, damit die Anwendung weiterhin ordnungsgemäß ausgeführt wird, falls die Rückgabegröße des Cookies in einer zukünftigen Version erhöht wird.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
Nachdem eine Anwendungsrolle mithilfe sp_setapprole
aktiviert wurde, bleibt die Rolle aktiv, bis der Benutzer entweder die Verbindung vom Server trennt oder ausgeführt wird sp_unsetapprole
.
Eine Übersicht über Anwendungsrollen finden Sie unter Application Roles.
Berechtigungen
Erfordert die Mitgliedschaft in public und die Kenntnis des Cookies, das beim Aktivieren der Anwendungsrolle erstellt wurde.
Beispiele
Aktivieren einer Anwendungsrolle mit einem Cookie und anschließendes Zurücksetzen auf den vorherigen Kontext
Im folgenden Beispiel wird die Sales11
-Anwendungsrolle mit dem Kennwort fdsd896#gfdbfdkjgh700mM
aktiviert, und es wird ein Cookie erstellt. Im Beispiel wird der Name des aktuellen Benutzers zurückgegeben, und der Kontext wird anschließend durch Ausführen von sp_unsetapprole
auf den ursprünglichen Kontext zurückgesetzt.
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