sp_setapprole (Transact-SQL)

Uaktywnia uprawnienia związane z rola aplikacji w bieżącej bazie danych.

Topic link iconKonwencje składni języka Transact-SQL

sp_setapprole [ @rolename = ] 'role',
    [ @password = ] { encrypt N'password' } 
      |
        'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]
        [ , [ @fCreateCookie = ] true | false ]
    [ , [ @cookie = ] @cookie OUTPUT ]

Argumenty

  • [ @rolename = ] 'role'
    Is the name of the application role defined in the current database.role is sysname, with no default.role must exist in the current database.

  • [ @password = ] { encrypt N'password' }
    Is the password required to activate the application role.password is sysname, with no default.password can be obfuscated by using the ODBC encrypt function.Po użyciu szyfrowanie Funkcja hasło musi zostać przekonwertowana na ciąg znaków Unicode, umieszczając N przed pierwszym znakiem cudzysłowu.

    Opcja szyfrowaniem nie jest obsługiwany dla połączeń, które używają Klient SQL.

    Important noteImportant Note:

    ODBC szyfrowanie funkcja nie zapewnia szyfrowania.Funkcja ta służy do ochrony haseł, które są przesyłane przez sieć nie powinien zależeć.Jeśli te informacje będą przesyłane przez sieć, za pomocą protokołu SSL lub IPSec.

  • @ szyfrowaniem = 'brak'
    Określa, że obfuscation nie będą używane.Hasło jest przekazywany do SQL Server jako zwykły tekst. Jest to wartość domyślna.

  • @encrypt= 'odbc'
    Określa, że ODBC będzie obfuscate hasło za pomocą ODBC szyfrowanie funkcja przed wysłaniem hasła do SQL Server Database Engine. Może to być określony tylko wtedy, gdy korzystasz z klient ODBC lub dostawca OLE DB dla programu SQL Server.

  • [ @fCreateCookie = ] true | false
    Specifies whether a cookie is to be created.true is implicitly converted to 1.false is implicitly converted to 0.

  • [ @cookie = ] @cookie OUTPUT
    Określa plik cookie zawiera parametru wyjściowego.The cookie is generated only if the value of @fCreateCookie is true.varbinary(8000)

Wartości kodów powrotnych

0 (sukces) i 1 (brak)

Remarks

After an application role is activated by using sp_setapprole, the role remains active until the user either disconnects from the server or executes sp_unsetapprole.sp_setapprole can be executed only by direct Transact-SQL statements.sp_setapprole cannot be executed within another stored procedure or within a user-defined transaction.

Aby zapoznać się z omówieniem ról aplikacji zobacz Application Roles.

Security noteSecurity Note:

Aby chronić hasło rola aplikacji, gdy jest on przesyłany przez sieć, należy zawsze używać zaszyfrowanego połączenia podczas włączania rola aplikacji

The Microsoft ODBC encrypt option is not supported by SqlClient.Poświadczenia muszą być przechowywane, ich szyfrowania z funkcji crypto API.Parametr password jest przechowywana jako jednokierunkowa wartość mieszania. Aby zachować zgodność ze starszymi wersjami SQL Server, zasady złożoności haseł nie są wymuszane przez sp_addapprole.Aby wymusić zasady złożoności haseł, należy użyć TWORZENIE rola aplikacji.

Uprawnienia

Wymaga członkostwo w grupie publiczne i znajomości hasła dla roli.

Przykłady

A.Uaktywnianie rola aplikacji bez opcji szyfrowaniem

W poniższym przykładzie uaktywnia rola aplikacji o nazwie SalesAppRole, przy użyciu hasła zwykłego tekstu AsDeF00MbXX, utworzony za pomocą uprawnień zaprojektowane specjalnie dla aplikacji, używane przez bieżącego użytkownika.

EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

W poniższym przykładzie uaktywnia Sales11 Rola aplikacji przy użyciu hasła fdsd896#gfdbfdkjgh700mM, a następnie tworzy plik cookie. W przykładzie zwraca nazwę bieżącego użytkownika, a następnie zostanie przywrócona do oryginalnego kontekstu przez sp_unsetapprole.

DECLARE @cookie varbinary(8000);
EXEC sp_setapprole 'Sales11', 'fdsd896#gfdbfdkjgh700mM'
    , @fCreateCookie = true, @cookie = @cookie OUTPUT;
-- The application role is now active.
SELECT USER_NAME();
-- This will return the name of the application role, Sales11.
EXEC sp_unsetapprole @cookie;
-- The application role is no longer active.
-- The original context has now been restored.
GO
SELECT USER_NAME();
-- This will return the name of the original user. 
GO