PERMISSIONS (języka Transact-SQL)

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

Important   This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use fn_my_permissions and HAS_PERMS_BY_NAME (języka Transact-SQL) instead.Dalsze korzystanie z funkcja PERMISSIONS może skutkować mniejszą wydajność.

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

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

Argumenty

  • objectid
    Jest to identyfikator zabezpieczany.Jeśli objectid to nie jest określona, wartość mapa bitowa zawiera instrukcja uprawnień dla bieżącego użytkownika; w przeciwnym razie mapa bitowa zawiera uprawnienia do zabezpieczanych dla bieżącego użytkownika. Zabezpieczany określona musi być w bieżącej bazie danych.Użycie OBJECT_ID Funkcja określenia objectid wartość.

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

Zwracane typy

int

Remarks

PERMISSIONS może służyć do ustalania, czy bieżący użytkownik ma uprawnienia wymagane do wykonywania instrukcja lub ZEZWOLIĆ innemu użytkownikowi.

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

Niższe 16 bitów odzwierciedlają uprawnień udzielonych przez użytkownika i uprawnienia, które są stosowane do grup systemu Windows lub oraz bieżący użytkownik jest członkiem ról serwera.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 tabela (wartość dziesiętna 2) i instrukcji kopia zapasowa DATABASE (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 jako dla dolnej 16 bitów opisano w poniższych tabelach, z wyjątkiem są one przesunięte w lewo o 16 bitów (pomnożona przez 65536).Na przykład 0x8 (wartości dziesiętnej 8) jest bit, który wskazuje INSERT uprawnień po objectid jest określony. 0X80000 (wartość dziesiętna 524288) wskazuje możliwość GRANT INSERT uprawnień, ponieważ 524288 = 8 x 65536.

Ze względu na członkostwo w rolach użytkownik, który nie ma uprawnienia do wykonać instrukcja nadal będzie mógł przyznać tego uprawnienia innym użytkownikom.

W poniższej tabela przedstawiono bitów, które są używane (uprawnienia) instrukcjaobjectid nie określono).

Bit (dec)

Bit (szesnastkowy)

Instrukcja uprawnień

1

0x1

TWORZENIE BAZY DANYCH)wzorzec tylko w wypadku bazy danych)

2

0x2

TWORZENIE tabela

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

kopia zapasowa DZIENNIKA

256

0x100

Reserved

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

Bit (dec)

Bit (szesnastkowy)

Instrukcja uprawnień

1

0x1

ZAZNACZ WSZYSTKIE

2

0x2

AKTUALIZUJ WSZYSTKIE

4

0x4

WSZYSTKIE ODWOŁANIA

8

0x8

Aby wyświetlić właściwości operator plan wykonania

16

0x10

USUWANIE

32

0x20

wykonać (tylko procedury)

4096

0x1000

SELECT bez (co najmniej jedna kolumna)

8192

0x2000

AKTUALIZACJI

16384

0x4000

ODWOŁUJE SIĘ DO DOWOLNEGO

W poniższej tabela przedstawiono liczbę bitów używanych dla uprawnienia do obiektów poziomie kolumna, które są zwracane, gdy oba objectid i kolumna są określone.

Bit (dec)

Bit (szesnastkowy)

Instrukcja uprawnień

1

0x1

WYBIERZ OPCJĘ

2

0x2

AKTUALIZACJA

4

0x4

ODWOŁANIA

Po określony parametr jest wartość NULL lub są one nieprawidłowe, zwracana jest wartość NULL (na przykład objectid lub kolumna, która nie istnieje). Wartości bitów dla uprawnień, które nie są stosowane (na przykład uprawnienie wykonać bit 0x20 tabela) są niezdefiniowane.

Za pomocą bitowe (I&) operator do określenia każdego bitu w mapę bitową, która jest zwracana przez funkcja PERMISSIONS.

The sp_helprotect systemowa procedura składowana can also be used to return a list of permissions for a user in the current database.

Przykłady

A.Przy użyciu funkcja PERMISSIONS z uprawnieniami instrukcja

W poniższym przykładzie określa, czy bieżący użytkownik może wykonywać CREATE TABLE Instrukcja.

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

B.Użycie funkcja PERMISSIONS z uprawnienia do obiektów

W poniższym przykładzie określa, czy bieżący użytkownik może wstawić wiersz danych do Address Tabela w AdventureWorks Baza danych.

IF PERMISSIONS(OBJECT_ID('AdventureWorks.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 funkcja PERMISSIONS z uprawnieniami grantable

W poniższym przykładzie określa, czy bieżący użytkownik może przyznać uprawnienie INSERT na Address Tabela w AdventureWorks Baza danych do innego użytkownika.

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