Teilen über


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

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_setapproleaktiviert 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

Im folgenden Beispiel wird die Sales11 -Anwendungsrolle mit dem Kennwort fdsd896#gfdbfdkjgh700mMaktiviert, 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