UPRAWNIENIA (Transact-SQL)

Zwraca wartość zawierający mapę bitową wskazującą instrukcja, obiektu lub kolumna uprawnienia bieżącego użytkownika.

Ważne:   Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.Użycie fn_my_permissions i Has_Perms_By_Name w zamian.Dalsze stosowanie uprawnień funkcja może skutkować mniejszą wydajność.

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

Składnia

PERMISSIONS ( [ objectid [ , 'column' ] ] )

Argumenty

  • objectid
    Jest Identyfikatorem zabezpieczany.Jeśli objectid nie jest określony, wartość mapa bitowa zawiera instrukcja uprawnień dla bieżącego użytkownika; w przeciwnym razie mapa bitowa zawiera uprawnień do zabezpieczany dla bieżącego użytkownika.zabezpieczany określona musi być w bieżącej bazie danych.Użycie OBJECT_ID funkcja , objectid wartości.

  • 'column'
    To opcjonalna nazwa kolumna , dla której zwracane są informacje uprawnień.kolumna musi być nazwa prawidłowego kolumna w tabela określonej przez objectid.

Zwracane typy

int

Uwagi

UPRAWNIENIA mogą być używane, aby ustalić, czy obecny użytkownik posiada uprawnienia wymagane do wykonać instrukcja lub aby udzielić uprawnień do innego użytkownika.

Informacje o uprawnieniach, zwracany jest mapą bitową 32-bitowych.

16 Bitów odzwierciedlają uprawnienia przyznane użytkownikowi i uprawnienia, które są stosowane do grup systemu Windows lub i stałe role serwera, których element członkowskijest bieżący użytkownik.Na przykład, zwrócona wartość 66 (wartość szesnastkowa 0x42), gdy nie objectid jest określony, wskazuje, że użytkownik ma uprawnienia do wykonać , CREATE TABLE (wartość dziesiętna 2) i instrukcje wykonywania kopii zapasowej bazy danych (wartość dziesiętna 64).

Górna 16 bitów odzwierciedlają uprawnienia, które użytkownik może udzielić innym użytkownikom.Górna 16 bitów, są interpretowane dokładnie jak 16 bitów opisano w poniższych tabelach, z wyjątkiem są przesunięte w lewo o 16 bitów (pomnożona przez 65536).Na przykład 0x8 (wartość dziesiętna 8) jest bit, który wskazuje uprawnienia do WSTAWIANIA po objectid określono.0X80000 (wartość dziesiętna 524288) wskazuje możliwość WSTAW UDZIEL uprawnień, ponieważ 524288 = 8 x 65536.

Ze względu na członkostwo w rolach użytkownika, który nie ma uprawnienia do wykonać instrukcja nadal można udzielić tego uprawnienia do innego użytkownika.

W poniższej tabela przedstawiono bity, które są używane uprawnienia instrukcja (objectid nie jest określony).

Bit (dec)

Bit (szesnastkowy)

Uprawnienie do instrukcji

1

0x1

Tworzenie bazy danych (master bazy danych tylko)

2

0x2

TWORZENIE TABELI

4

0x4

TWORZENIE PROCEDURY

8

0x8

TWORZENIE WIDOKU

16

0x10

TWORZENIE REGUŁY

32

0x20

UTWÓRZ DOMYŚLNE

64

0x40

KOPIA ZAPASOWA BAZY DANYCH

128

0x80

WYKONYWANIE KOPII ZAPASOWEJ DZIENNIKA

256

0x100

Zarezerwowane

W poniższej tabela przedstawiono bitów używanych dla uprawnienia do obiektów, które są zwracane, gdy tylko objectid określono.

Bit (dec)

Bit (szesnastkowy)

Uprawnienie do instrukcji

1

0x1

ZAZNACZ WSZYSTKIE

2

0x2

AKTUALIZUJ WSZYSTKO

4

0x4

WSZYSTKIE ODWOŁANIA

8

0x8

WSTAW

16

0x10

USUŃ

32

0x20

Wykonywanie (tylko procedury)

4096

0x1000

Zaznacz wszystkie (co najmniej jedną kolumna)

8192

0x2000

AKTUALIZACJI

16384

0x4000

ODWOŁUJE SIĘ DO DOWOLNEGO

W poniższej tabela przedstawiono bitów używanych dla kolumna-poziom uprawnień obiektu, które są zwracane podczas obu objectid i kolumna są określane.

Bit (dec)

Bit (szesnastkowy)

Uprawnienie do instrukcji

1

0x1

WYBIERZ

2

0x2

AKTUALIZACJA

4

0x4

ODWOŁANIA

Po określony parametr jest ZEROWY lub nie jest prawidłowe, zwracana jest wartość NULL (na przykład, objectid lub kolumna , która nie istnieje).Wartości bitów dla uprawnienia, które nie mają zastosowania (na przykład wykonywanie uprawnień, bit 0x20 dla tabela) są niezdefiniowane.

Użyj iloczynu (AND) (&) operator do określenia każdy bit, zestaw w mapie bitowej zwróconą przez funkcjauprawnienia.

sp_helprotect System procedura składowana można również aby powrócić do listy uprawnień użytkownika w bieżącej bazie danych.

Przykłady

A.Przy użyciu uprawnień funkcja z uprawnieniami instrukcja

Następujący przykład określa, czy bieżący użytkownik może wykonać CREATE TABLE instrukcja.

IF PERMISSIONS()&2=2
   CREATE TABLE test_table (col1 INT)
ELSE
   PRINT 'ERROR: The current user cannot create a table.';

B.Uprawnienia do obiektów przy użyciu uprawnień, funkcja

Następujący przykład określa, czy bieżący użytkownik może wstawiać wierszy danych do Address tabela w AdventureWorks2008R2 bazy danych.

IF PERMISSIONS(OBJECT_ID('AdventureWorks2008R2.Person.Address','U'))&8=8 
   PRINT 'The current user can insert data into Person.Address.'
ELSE
   PRINT 'ERROR: The current user cannot insert data into Person.Address.';

C.Przy użyciu uprawnień funkcja z uprawnieniami grantable

Następujący przykład określa, czy bieżący użytkownik może udzielić uprawnienia do WSTAWIANIA na Address tabela w AdventureWorks2008R2 bazy danych do innego użytkownika.

IF PERMISSIONS(OBJECT_ID('AdventureWorks2008R2.Person.Address','U'))&0x80000=0x80000
   PRINT 'INSERT on Person.Address is grantable.'
ELSE
   PRINT 'You may not GRANT INSERT permissions on Person.Address.';