Delen via


sp_unsetapprole (Transact-SQL)

Van toepassing op:SQL Server

Hiermee wordt een toepassingsrol gedeactiveerd en wordt teruggezet naar de vorige beveiligingscontext.

Transact-SQL syntaxis-conventies

Syntaxis

sp_unsetapprole [ @cookie = ] cookie
[ ; ]

Argumenten

Hiermee geeft u de cookie op die is gemaakt toen de toepassingsrol werd geactiveerd. @cookie is varbinary(8000), zonder standaardwaarde. De cookie wordt gemaakt door sp_setapprole.

Opmerking

De cookieparameter OUTPUT voor sp_setapprole wordt momenteel gedocumenteerd als varbinary(8000) die de juiste maximale lengte is. De huidige implementatie retourneert echter varbinary(50). Toepassingen moeten varbinary(8000) blijven reserveren, zodat de toepassing correct blijft functioneren als de cookie-retourgrootte in een toekomstige release toeneemt.

Codewaarden retourneren

0 (geslaagd) en 1 (fout)

Opmerkingen

Nadat een toepassingsrol is geactiveerd met behulp sp_setapprolevan, blijft de rol actief totdat de gebruiker de verbinding met de server verbreekt of wordt uitgevoerd sp_unsetapprole.

Zie Toepassingsrollen voor een overzicht van toepassingsrollen.

Machtigingen

Vereist lidmaatschap van het publiek en kennis van de cookie die is opgeslagen toen de toepassingsrol werd geactiveerd.

Voorbeelden

In het volgende voorbeeld wordt de Sales11 toepassingsrol geactiveerd en wordt een cookie gemaakt. Het voorbeeld retourneert de naam van de huidige gebruiker en keert vervolgens terug naar de oorspronkelijke context door deze uit te sp_unsetapprolevoeren. Vervang <password> door een sterk wachtwoord.

DECLARE @cookie AS VARBINARY (8000);

EXECUTE sp_setapprole 'Sales11',
    '<password>',
    @fCreateCookie = true,
    @cookie = @cookie OUTPUT;

-- The application role is now active.
SELECT USER_NAME();

-- Return the name of the application role, Sales11.
EXECUTE 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