sp_setapprole (języka Transact-SQL)

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

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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

Argumenty

  • [ @ rolename = ] 'role"
    Jest to nazwa rola aplikacji zdefiniowanych w bieżącej bazie danych.rolejest sysname, z braku domyślne.rolemusi istnieć w bieżącej bazie danych.

  • [ @ hasło = ] {zaszyfrować N'password" }
    To hasło wymagane do aktywowania rola aplikacji.passwordjest sysname, z braku domyślne.passwordmożna zastosowanym przy użyciu ODBC szyfrowania funkcja.Podczas korzystania z szyfrowania funkcjahasła należy przekonwertować na Unicode ciąg umieszczając n przed pierwszym znakiem cudzysłowu.

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

    Ważna informacjaWażne:

    ODBC szyfrowania funkcja nie zapewnia szyfrowanie.Nie powinny polegać na tej funkcja w celu ochrony haseł, które są przesyłane przez sieć.Jeśli te informacje będą przesyłane przez sieć, użyj SSL lub IPSec.

  • @ Szyfruj = "Brak"
    Określa, że używany nie żart fałszerstwo.Hasło jest przekazywana do SQL Server jako zwykły tekst.Jest to wartość domyślna.

  • @ szyfrowania= "odbc"
    Określa ODBC będą zasłaniają hasło za pomocą ODBC szyfrowania funkcja przed wysłaniem hasła do Aparat baz danych programu SQL Server.Można to określić tylko wtedy, gdy używasz ODBC klient lub dostawcy OLE DB dla SQL Server.

  • [ @ fCreateCookie = ] true | FAŁSZ
    Określa, czy plik cookie ma być utworzony.TRUE są niejawnie konwertowane na 1.FALSE są niejawnie konwertowane na 0.

  • [ @ cookie = ] @ cookie wyjścia
    Określa parametr wyjściowy ma zawierać plik cookie.Plik cookie jest generowany tylko wtedy, gdy wartość @ fCreateCookie jest true.varbinary(8000)

Wartości kodów powrotnych

0 (sukces) i 1 (błąd)

Uwagi

Po uaktywnieniu rola aplikacji za pomocą sp_setapprole, roli pozostaje aktywny aż użytkownik rozłącza z serwerem lub wykonuje sp_unsetapprole.sp_setapprole mogą być wykonywane tylko przez bezpośrednie Transact-SQL instrukcji.sp_setapprole nie można wykonać w ramach innej procedura składowana lub transakcji zdefiniowanej przez użytkownika.

Aby uzyskać omówienie ról aplikacji, zobacz Ról aplikacji.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Aby chronić hasło rola aplikacji podczas ich przesyłania przez sieć, należy zawsze używać zaszyfrowanego połączenia podczas włączania rola aplikacji...

Microsoft ODBC szyfrowania opcja nie jest obsługiwana przez SqlClient.poświadczeniamuszą być przechowywane, ich szyfrowania za pomocą funkcji crypto API .Parametr password jest przechowywana jako jednokierunkowego mieszania.W celu zachowania zgodności ze starszymi wersjami programu SQL Server, zasady złożoności haseł nie jest wymuszane przez sp_addapprole.Aby wymusić zasady złożoności haseł, użyj Utworzyć ROLĘ aplikacji.

Uprawnienia

Wymaga członkostwa w public i wiedza hasło dla roli.

Przykłady

A.Uaktywnianie rola aplikacji , bez opcji szyfrowania

Poniższy przykład powoduje uaktywnienie rola aplikacji o nazwie SalesAppRole, przy użyciu hasła zwykłego tekstu AsDeF00MbXX, utworzone za pomocą uprawnień zaprojektowane specjalnie dla aplikacji używanej przez bieżącego użytkownika.

EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

Poniższy przykład powoduje uaktywnienie Sales11 rola aplikacji przy użyciu hasła fdsd896#gfdbfdkjgh700mMi tworzy plik cookie.Przykład zwraca nazwę bieżącego użytkownika, a następnie powróci do oryginalnego kontekstu przez wykonywanie 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