Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL Server
Azure SQL Database
SQL databáze v Microsoft Fabric
Aktivuje oprávnění přidružená k roli aplikace v aktuální databázi.
Syntaxe
sp_setapprole
[ @rolename = ] N'rolename'
, [ @password = ] N'password'
[ , [ @encrypt = ] 'encrypt' ]
[ , [ @fCreateCookie = ] fCreateCookie ]
[ , [ @cookie = ] cookie OUTPUT ]
[ ; ]
Argumenty
[ @rolename = ] N'rolename'
Název role aplikace definované v aktuální databázi. @rolename je sysname bez výchozího nastavení. @rolename musí existovat v aktuální databázi.
[ @password = ] { encrypt N'password' }
Heslo potřebné k aktivaci role aplikace.
@password je sysname , bez výchozího nastavení.
@password lze obfuskovat pomocí funkce ODBC encrypt . Při použití encrypt funkce musí být heslo převedeno na řetězec Unicode umístěním N před první uvozovku.
Možnost šifrování není podporována u připojení, která používají SqlClient.
Důležité
Funkce ODBC encrypt neposkytuje šifrování. Tuto funkci byste neměli spoléhat na ochranu hesel přenášených přes síť. Pokud se tyto informace budou přenášet přes síť, použijte protokol TLS nebo IPSec.
[ @encrypt = ] { 'none' | Odbc }
Určuje typ šifrování před odesláním hesla do databázového stroje SQL Serveru. @encrypt je varchar(10) a může to být jedna z těchto hodnot.
| Hodnota | Popis |
|---|---|
none (výchozí) |
Určuje, že se nepoužívá žádná obfuskace. Heslo se předá SQL Serveru jako prostý text. |
odbc |
Určuje, že rozhraní ODBC před odesláním hesla do databázového stroje SQL Serveru obfusuje heslo pomocí funkce ODBC encrypt . Tuto hodnotu lze zadat pouze v případě, že používáte klienta ODBC nebo zprostředkovatele OLE DB pro SQL Server. |
[ @fCreateCookie = ] { 'true' | "false" }
Určuje, jestli se má vytvořit soubor cookie.
@fCreateCookie je bit, s výchozím nastavením 0.
true je implicitně převeden na 1.
false je implicitně převeden na 0.
[ @cookie = ] výstup cookie
Určuje výstupní parametr, který bude obsahovat soubor cookie.
@cookie je výstupní parametr typu varbinary(8000). Soubor cookie se generuje pouze v případě, že hodnota @fCreateCookie je true.
Poznámka:
I když aktuální implementace vrací varbinary(50),měly by aplikace rezervovat zdokumentovaný varbinary(8000), aby aplikace nadále fungovala správně, pokud se velikost souboru cookie v budoucí verzi zvýší.
Hodnoty návratového kódu
0 (úspěch) a 1 (selhání).
Poznámky
Po aktivaci role aplikace pomocí sp_setapprolezůstane role aktivní, dokud se uživatel neodpojí od serveru nebo nespustí sp_unsetapprole. Nemůžete použít sp_setapprole v rámci jiné uložené procedury, triggeru nebo v rámci uživatelem definované transakce. Lze ho spustit pouze jako přímé příkazy Transact-SQL.
Přehled aplikačních rolí najdete v tématu Role aplikací.
Při povolování role aplikace byste měli při povolování role aplikace vždy používat šifrované připojení k ochraně hesla role aplikace, když ho přenášíte přes síť.
SqlClient nepodporuje možnost Microsoft ODBCencrypt. Pokud potřebujete uložit přihlašovací údaje, zašifrujte je pomocí funkcí kryptografického rozhraní API. Parametr @password je uložen jako jednosměrná hodnota hash. Pokud chcete zachovat kompatibilitu se staršími verzemi SQL Serveru, sp_addapprole nevynucuje zásady složitosti hesel. Pokud chcete vynutit zásady složitosti hesel, použijte funkci CREATE APPLICATION ROLE.
Povolení
Vyžaduje členství ve veřejném prostředí a znalost hesla pro roli.
Příklady
A. Aktivace role aplikace bez možnosti šifrování
Následující příklad aktivuje roli aplikace s názvem SalesAppRole, vytvořenou s oprávněními navrženými pro aplikaci používanou aktuálním uživatelem. Nahraďte <password> silným heslem.
EXECUTE sys.sp_setapprole 'SalesApprole', '<password>';
GO
B. Aktivace role aplikace pomocí souboru cookie a následná návrat k původnímu kontextu
Následující příklad aktivuje Sales11 roli aplikace a vytvoří soubor cookie. Příklad vrátí název aktuálního uživatele a pak se vrátí k původnímu kontextu spuštěním sp_unsetapprole. Nahraďte <password> silným heslem.
DECLARE @cookie AS VARBINARY (8000);
EXECUTE sys.sp_setapprole
'Sales11',
'<password>',
@fCreateCookie = true,
@cookie = @cookie OUTPUT;
Role aplikace je teď aktivní.
USER_NAME() vrátí název role aplikace, Sales11.
SELECT USER_NAME();
Zrušte nastavení role aplikace.
EXECUTE sys.sp_unsetapprole @cookie;
GO
Role aplikace už není aktivní. Původní kontext se obnoví.
USER_NAME() vrátí jméno původního uživatele.
SELECT USER_NAME();
GO