Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Hiermee worden de machtigingen geactiveerd die zijn gekoppeld aan een toepassingsrol in de huidige database.
Transact-SQL syntaxis-conventies
Syntaxis
sp_setapprole
[ @rolename = ] N'rolename'
, [ @password = ] N'password'
[ , [ @encrypt = ] 'encrypt' ]
[ , [ @fCreateCookie = ] fCreateCookie ]
[ , [ @cookie = ] cookie OUTPUT ]
[ ; ]
Argumenten
[ @rolename = ] N'rolename'
De naam van de toepassingsrol die is gedefinieerd in de huidige database. @rolenameis sysname, zonder standaardinstelling. @rolename moet aanwezig zijn in de huidige database.
[ @password = ] { n'wachtwoord versleutelen' }
Het wachtwoord dat is vereist voor het activeren van de toepassingsrol.
@password is sysname, zonder standaardinstelling.
@password kan worden verborgen met behulp van de ODBC-functie encrypt . Wanneer u de encrypt functie gebruikt, moet het wachtwoord worden geconverteerd naar een Unicode-tekenreeks door het eerste aanhalingsteken te plaatsen N .
De versleutelingsoptie wordt niet ondersteund voor verbindingen die gebruikmaken van SqlClient.
Belangrijk
De ODBC-functie encrypt biedt geen versleuteling. U moet niet vertrouwen op deze functie om wachtwoorden te beveiligen die via een netwerk worden verzonden. Als deze informatie via een netwerk wordt verzonden, gebruikt u TLS of IPSec.
[ @encrypt = ] { 'none' | 'odbc' }
Hiermee geeft u het versleutelingstype op voordat u het wachtwoord naar de SQL Server Database Engine verzendt. @encrypt is varchar(10), en kan een van deze waarden zijn.
| Waarde | Beschrijving |
|---|---|
none (standaard) |
Hiermee geeft u op dat er geen verdoezeling wordt gebruikt. Het wachtwoord wordt als tekst zonder opmaak doorgegeven aan SQL Server. |
odbc |
Hiermee geeft u op dat ODBC het wachtwoord verdooft met behulp van de ODBC-functie encrypt voordat het wachtwoord naar de SQL Server-database-engine wordt verzonden. Deze waarde kan alleen worden opgegeven wanneer u een ODBC-client of de OLE DB-provider voor SQL Server gebruikt. |
[ @fCreateCookie = ] { 'true' | 'false' }
Hiermee geeft u op of er een cookie moet worden gemaakt.
@fCreateCookie is bit, met een standaardwaarde van 0.
true wordt impliciet geconverteerd naar 1.
false wordt impliciet geconverteerd naar 0.
[ = @cookie ] cookie OUTPUT
Hiermee geeft u een uitvoerparameter op die de cookie bevat.
@cookie is een OUTPUT-parameter van het type varbinary(8000). De cookie wordt alleen gegenereerd als de waarde van @fCreateCookie is true.
Opmerking
Hoewel de huidige implementatie varbinary(50) retourneert, moeten toepassingen de gedocumenteerde varbinary(8000)reserveren, zodat de toepassing correct blijft functioneren als de cookie-retourgrootte toeneemt in een toekomstige release.
Codewaarden retourneren
0 (geslaagd) en 1 (mislukt).
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. U kunt deze niet gebruiken sp_setapprole binnen een andere opgeslagen procedure, trigger of binnen een door de gebruiker gedefinieerde transactie. Het kan alleen worden uitgevoerd als directe Transact-SQL instructies.
Zie Toepassingsrollen voor een overzicht van toepassingsrollen.
U moet altijd een versleutelde verbinding gebruiken bij het inschakelen van een toepassingsrol om het wachtwoord van de toepassingsrol te beveiligen wanneer u deze via een netwerk verzendt.
De microsoft ODBC-optie encrypt wordt niet ondersteund door SqlClient. Als u referenties moet opslaan, versleutelt u deze met de crypto-API-functies. De parameter @password wordt opgeslagen als een hash in één richting. Als u de compatibiliteit met eerdere versies van SQL Server wilt behouden, sp_addapprole dwingt u het beleid voor wachtwoordcomplexiteit niet af. Gebruik CREATE APPLICATION ROLE om het beleid voor wachtwoordcomplexiteit af te dwingen.
Machtigingen
Vereist lidmaatschap van openbaar en kennis van het wachtwoord voor de rol.
Voorbeelden
Eén. Een toepassingsrol activeren zonder de versleutelingsoptie
In het volgende voorbeeld wordt een toepassingsrol geactiveerd met de naam SalesAppRole, gemaakt met machtigingen die zijn ontworpen voor de toepassing die door de huidige gebruiker wordt gebruikt. Vervang <password> door een sterk wachtwoord.
EXECUTE sys.sp_setapprole 'SalesApprole', '<password>';
GO
B. Een toepassingsrol activeren met een cookie en vervolgens terugkeren naar de oorspronkelijke context
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 sys.sp_setapprole
'Sales11',
'<password>',
@fCreateCookie = true,
@cookie = @cookie OUTPUT;
De toepassingsrol is nu actief.
USER_NAME()retourneert de naam van de toepassingsrol. Sales11
SELECT USER_NAME();
Maak de toepassingsrol ongedaan.
EXECUTE sys.sp_unsetapprole @cookie;
GO
De toepassingsrol is niet meer actief. De oorspronkelijke context wordt hersteld.
USER_NAME() retourneert de naam van de oorspronkelijke gebruiker.
SELECT USER_NAME();
GO