Udostępnij za pomocą


sp_setapprole (Transact-SQL)

Dotyczy do:SQL ServerAzure SQL DatabaseBaza danych SQL w Microsoft Fabric

Aktywuje uprawnienia skojarzone z rolą aplikacji w bieżącej bazie danych.

Transact-SQL konwencje składni

Składnia

sp_setapprole
    [ @rolename = ] N'rolename'
    , [ @password = ] N'password'
    [ , [ @encrypt = ] 'encrypt' ]
    [ , [ @fCreateCookie = ] fCreateCookie ]
    [ , [ @cookie = ] cookie OUTPUT ]
[ ; ]

Argumenty (w programowaniu)

[ @rolename = ] N'rolename'

Nazwa roli aplikacji zdefiniowanej w bieżącej bazie danych. @rolename jest nazwą systemu bez wartości domyślnej. @rolename musi istnieć w bieżącej bazie danych.

[ @password = ] { szyfruj N'password' }

Hasło wymagane do aktywowania roli aplikacji. @password jest nazwa_systemu, bez wartości domyślnej. @password można zaciemnić za pomocą funkcji ODBC encrypt . Jeśli używasz encrypt funkcji, hasło musi zostać przekonwertowane na ciąg Unicode, umieszczając N przed pierwszym cudzysłowem.

Opcja szyfrowania nie jest obsługiwana w przypadku połączeń korzystających z programu SqlClient.

Ważne

Funkcja ODBC encrypt nie zapewnia szyfrowania. Nie należy polegać na tej funkcji w celu ochrony haseł przesyłanych za pośrednictwem sieci. Jeśli te informacje będą przesyłane przez sieć, użyj protokołu TLS lub IPSec.

[ @encrypt = ] { 'none' | "odbc" }

Określa typ szyfrowania przed wysłaniem hasła do aparatu bazy danych programu SQL Server. @encrypt jest varchar(10) i może być jedną z tych wartości.

Wartość Opis
none (ustawienie domyślne) Określa, że nie jest używane zaciemnianie. Hasło jest przekazywane do programu SQL Server jako zwykły tekst.
odbc Określa, że odBC zaciemnia hasło przy użyciu funkcji ODBC encrypt przed wysłaniem hasła do aparatu bazy danych programu SQL Server. Tę wartość można określić tylko wtedy, gdy używasz klienta ODBC lub dostawcy OLE DB dla programu SQL Server.

[ @fCreateCookie = ] { 'true' | "false" }

Określa, czy plik cookie ma zostać utworzony. @fCreateCookie jest bitowa z wartością domyślną 0.

true element jest niejawnie konwertowany na 1. false element jest niejawnie konwertowany na 0.

Określa parametr wyjściowy, który ma zawierać plik cookie. @cookie jest parametrem OUTPUT typu varbinary(8000). Plik cookie jest generowany tylko wtedy, gdy wartość @fCreateCookie to true.

Uwaga / Notatka

Mimo że bieżąca implementacja zwraca wartość varbinary(50), aplikacje powinny zarezerwować udokumentowaną wartość varbinary(8000),aby aplikacja nadal działała prawidłowo, jeśli rozmiar zwracany przez plik cookie wzrośnie w przyszłej wersji.

Zwracanie wartości kodu

0 (powodzenie) i 1 (niepowodzenie).

Uwagi

Po aktywowaniu roli aplikacji przy użyciu sp_setapproleprogramu rola pozostaje aktywna, dopóki użytkownik nie rozłączy się z serwerem lub wykona polecenie sp_unsetapprole. Nie można używać sp_setapprole w ramach innej procedury składowanej, wyzwalacza ani transakcji zdefiniowanej przez użytkownika. Można go wykonać tylko jako instrukcje Transact-SQL bezpośrednie.

Aby zapoznać się z omówieniem ról aplikacji, zobacz Role aplikacji.

Zawsze należy używać szyfrowanego połączenia podczas włączania roli aplikacji, aby chronić hasło roli aplikacji podczas przesyłania go przez sieć.

Opcja Microsoft ODBC encrypt nie jest obsługiwana przez klienta SqlClient. Jeśli musisz przechowywać poświadczenia, zaszyfruj je za pomocą funkcji interfejsu API kryptograficznego. Parametr @password jest przechowywany jako skrót jednokierunkowy. Aby zachować zgodność z wcześniejszymi wersjami programu SQL Server, sp_addapprole nie wymusza zasad złożoności hasła. Aby wymusić zasady złożoności hasła, użyj funkcji CREATE APPLICATION ROLE.

Uprawnienia

Wymaga członkostwa w publicznie i znajomości hasła dla roli.

Przykłady

Odp. Aktywowanie roli aplikacji bez opcji szyfrowania

W poniższym przykładzie aktywowano rolę aplikacji o nazwie SalesAppRole, utworzoną z uprawnieniami przeznaczonymi dla aplikacji używanej przez bieżącego użytkownika. Zastąp <password> ciąg silnym hasłem.

EXECUTE sys.sp_setapprole 'SalesApprole', '<password>';
GO

Poniższy przykład aktywuje Sales11 rolę aplikacji i tworzy plik cookie. Przykład zwraca nazwę bieżącego użytkownika, a następnie przywraca oryginalny kontekst, wykonując polecenie sp_unsetapprole. Zastąp <password> ciąg silnym hasłem.

DECLARE @cookie AS VARBINARY (8000);

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

Rola aplikacji jest teraz aktywna. USER_NAME()Zwraca nazwę roli aplikacji . Sales11

SELECT USER_NAME();

Usuń zaznaczenie roli aplikacji.

EXECUTE sys.sp_unsetapprole @cookie;
GO

Rola aplikacji nie jest już aktywna. Przywracany jest oryginalny kontekst. USER_NAME() Zwraca nazwę oryginalnego użytkownika.

SELECT USER_NAME();
GO