Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Aktiverar de behörigheter som är associerade med en programroll i den aktuella databasen.
Transact-SQL syntaxkonventioner
Syntax
sp_setapprole
[ @rolename = ] N'rolename'
, [ @password = ] N'password'
[ , [ @encrypt = ] 'encrypt' ]
[ , [ @fCreateCookie = ] fCreateCookie ]
[ , [ @cookie = ] cookie OUTPUT ]
[ ; ]
Argumentpunkter
[ @rolename = ] N'rolename'
Namnet på programrollen som definierats i den aktuella databasen. @rolename är sysname, utan standard. @rolename måste finnas i den aktuella databasen.
[ @password = ] { kryptera N'password' }
Lösenordet som krävs för att aktivera programrollen.
@password är sysname, utan standard.
@password kan döljas med hjälp av funktionen ODBC encrypt . När du använder encrypt funktionen måste lösenordet konverteras till en Unicode-sträng genom att placeras N före det första citattecknet.
Krypteringsalternativet stöds inte för anslutningar som använder SqlClient.
Viktigt!
ODBC-funktionen encrypt tillhandahåller inte kryptering. Du bör inte förlita dig på den här funktionen för att skydda lösenord som överförs via ett nätverk. Om den här informationen kommer att överföras över ett nätverk använder du TLS eller IPSec.
[ @encrypt = ] { 'none' | "odbc" }
Anger krypteringstypen innan lösenordet skickas till SQL Server Database Engine. @encrypt är varchar(10) och kan vara ett av dessa värden.
| Värde | Beskrivning |
|---|---|
none (standardinställning) |
Anger att ingen fördunkling används. Lösenordet skickas till SQL Server som oformaterad text. |
odbc |
Anger att ODBC fördunklar lösenordet med hjälp av ODBC-funktionen encrypt innan lösenordet skickas till SQL Server Database Engine. Det här värdet kan bara anges när du använder antingen en ODBC-klient eller OLE DB-providern för SQL Server. |
[ @fCreateCookie = ] { 'true' | "false" }
Anger om en cookie ska skapas.
@fCreateCookie är bit, med standardvärdet 0.
true konverteras implicit till 1.
false konverteras implicit till 0.
[ @cookie = ] cookieUTDATA
Anger en utdataparameter som ska innehålla cookien.
@cookie är en OUTPUT-parameter av typen varbinary(8000). Cookien genereras endast om värdet för @fCreateCookie är true.
Anmärkning
Även om den aktuella implementeringen returnerar varbinary(50), bör program reservera den dokumenterade varbinary(8000), så att programmet fortsätter att fungera korrekt om cookiens returstorlek ökar i en framtida version.
Returnera kodvärden
0 (framgång) och 1 (misslyckande).
Anmärkningar
När en programroll har aktiverats med hjälp sp_setapproleav förblir rollen aktiv tills användaren antingen kopplar från servern eller kör sp_unsetapprole. Du kan inte använda sp_setapprole i en annan lagrad procedur, utlösare eller inom en användardefinierad transaktion. Det kan bara köras som direkta Transact-SQL-instruktioner.
En översikt över programroller finns i Programroller.
Du bör alltid använda en krypterad anslutning när du aktiverar en programroll för att skydda lösenordet för programrollen när du överför den via ett nätverk.
Microsoft ODBC-alternativet encrypt stöds inte av SqlClient. Om du måste lagra autentiseringsuppgifter krypterar du dem med krypto-API-funktionerna. Parametern @password lagras som en enkelriktad hash. Om du vill bevara kompatibiliteten med tidigare versioner av SQL Server sp_addapprole tillämpar du inte principen för lösenordskomplexitet. Använd CREATE APPLICATION ROLE för att framtvinga lösenordskomplexitetsprincipen.
Behörigheter
Kräver medlemskap offentligt och kunskap om lösenordet för rollen.
Exempel
A. Aktivera en programroll utan krypteringsalternativet
I följande exempel aktiveras en programroll med namnet SalesAppRole, som skapats med behörigheter som är utformade för det program som används av den aktuella användaren. Ersätt <password> med ett starkt lösenord.
EXECUTE sys.sp_setapprole 'SalesApprole', '<password>';
GO
B. Aktivera en programroll med en cookie och återgå sedan till den ursprungliga kontexten
I följande exempel aktiveras programrollen Sales11 och en cookie skapas. Exemplet returnerar namnet på den aktuella användaren och återgår sedan till den ursprungliga kontexten genom att sp_unsetapproleköra . Ersätt <password> med ett starkt lösenord.
DECLARE @cookie AS VARBINARY (8000);
EXECUTE sys.sp_setapprole
'Sales11',
'<password>',
@fCreateCookie = true,
@cookie = @cookie OUTPUT;
Programrollen är nu aktiv.
USER_NAME() returnerar namnet på programrollen, Sales11.
SELECT USER_NAME();
Ta bort programrollen.
EXECUTE sys.sp_unsetapprole @cookie;
GO
Programrollen är inte längre aktiv. Den ursprungliga kontexten återställs.
USER_NAME() returnerar namnet på den ursprungliga användaren.
SELECT USER_NAME();
GO