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ść.
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.';