Udostępnij za pomocą


UPRAWNIENIA (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Zwraca wartość zawierającą bitmapę, która wskazuje uprawnienia do instrukcji, obiektu lub kolumny aktualnego użytkownika.

Ważne

Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Używaj fn_my_permissions i Has_Perms_By_Name zamiast tego. Dalsze korzystanie z funkcji UPRAWNIEŃ może skutkować spowolnieniem wydajności.

Transact-SQL konwencje składni

Składnia

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

Arguments

objectid (identyfikator obiektu)
To ID zabezpieczalnego. Jeśli objectid nie jest podany, wartość bitmapy zawiera uprawnienia do instrukcji dla bieżącego użytkownika; w przeciwnym razie bitmapa zawiera uprawnienia zabezpieczone dla bieżącego użytkownika. Zabezpieczalna informacja musi znajdować się w aktualnej bazie danych. Użyj funkcji OBJECT_ID , aby określić wartość objectid .

'kolumna'
To opcjonalna nazwa kolumny, dla której zwracane są informacje o uprawnieniach. Kolumna musi być poprawną nazwą kolumny w tabeli określonej przez objectid.

Typy zwracane

int

Uwagi

UPRAWNIENIA mogą być użyte do określenia, czy aktualny użytkownik posiada uprawnienia potrzebne do wykonania polecenia lub do PRZYZNANIA uprawnień innemu użytkownikowi.

Informacje o uprawnieniach zwracane to bitmapa 32-bitowa.

Dolne 16 bitów odzwierciedla uprawnienia przyznane użytkownikowi, a także uprawnienia przypisywane do grup Windows lub stałych ról serwerowych, których aktualny użytkownik jest członkiem. Na przykład, zwracana wartość 66 (wartość heksadecimalna 0x42), gdy nie podano identyfikatora obiektu , oznacza, że użytkownik ma uprawnienia do wykonywania instrukcji CREATE TABLE (wartość dziesiętna 2) oraz BACKUP DATABASE (wartość dziesiętna 64).

Górne 16 bitów odzwierciedla uprawnienia, które użytkownik może PRZYZNAĆ innym użytkownikom. Górne 16 bitów interpretuje się dokładnie tak samo jak dolne 16 bitów opisane w poniższych tabelach, z tą różnicą, że są przesunięte w lewo o 16 bitów (pomnożone przez 65536). Na przykład 0x8 (wartość dziesiętna 8) to bit, który wskazuje uprawnienia INSERT, gdy podano objectid . Natomiast 0x80000 (wartość dziesiętna 524288) wskazuje możliwość PRZYZNANIA UPRAWNIENIA INSERT, ponieważ 524288 = 8 x 65536.

Dzięki członkostwu w rolach, użytkownik, który nie ma uprawnień do wykonywania instrukcji, może nadal móc przyznać to uprawnienia innemu użytkownikowi.

Poniższa tabela pokazuje bity używane do uprawnień do instrukcji (objectid nie jest określony).

Bit (dec) Bit (heks) Zgoda na oświadczenie
1 0x1 UTWÓRZ BAZĘ DANYCH (tylko baza główna)
2 0x2 CREATE TABLE
4 0x4 TWORZENIE PROCEDURY
8 0x8 UTWÓRZ WIDOK
16 0x10 TWORZENIE REGUŁY
32 0x20 UTWÓRZ DOMYŚLNE
64 0x40 KOPIA ZAPASOWA BAZA DANYCH
128 0x80 DZIENNIK KOPII ZAPASOWYCH
256 0x100 Zarezerwowana

Poniższa tabela pokazuje bity używane do uprawnień obiektów, które zwracane są przy podaniu tylko objectid .

Bit (dec) Bit (heks) Zgoda na oświadczenie
1 0x1 WYBIERZ WSZYSTKIE
2 0x2 AKTUALIZACJA WSZYSTKO
4 0x4 WSZYSTKIE PRZYPISY
8 0x8 INSERT
16 0x10 USUŃ
32 0x20 EXECUTE (tylko procedury)
4096 0x1000 WYBIERZ DOWOLNĄ (co najmniej jedną kolumnę)
8192 0x2000 AKTUALIZUJ DOWOLNE
16384 0x4000 PRZYPISY DOWOLNE

Poniższa tabela pokazuje bity używane do uprawnień obiektów na poziomie kolumn, które są zwracane, gdy zarówno objectid, jak i kolumna są określane.

Bit (dec) Bit (heks) Zgoda na oświadczenie
1 0x1 SELECT
2 0x2 Aktualizacja
4 0x4 REFERENCES

NULL jest zwracany, gdy określony parametr jest NULL lub nieważny (na przykład objectid lub kolumna, która nie istnieje). Wartości bitowe dla uprawnień, które nie obowiązują (na przykład uprawnienia WYKONAJ, bit 0x20, dla tabeli) są niezdefiniowane.

Użyj operatora bitowe AND (&) do określenia każdego bitu w bitmapie zwracanej przez funkcję PERMISSIONS.

Procedura przechowywana w systemie sp_helprotect może być również użyta do zwracania listy uprawnień dla użytkownika w bieżącej bazie danych.

Przykłady

A. Korzystanie z funkcji UPRAWNIEŃ z uprawnieniami do wykonywania zdań

Poniższy przykład określa, czy obecny użytkownik może wykonać CREATE TABLE polecenie.

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

B. Korzystanie z funkcji PERMISSIONS z uprawnieniami do obiektów

Poniższy przykład określa, czy obecny użytkownik może wstawić wiersz danych do tabeli Address w AdventureWorks2025 bazie danych.

IF PERMISSIONS(OBJECT_ID('AdventureWorks2022.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. Korzystanie z funkcji UPRAWNIEŃ z uprawnieniami do przyznania

Poniższy przykład określa, czy obecny użytkownik może przyznać innemu użytkownikowi uprawnienia INSERT do tabeli Address w AdventureWorks2025 bazie danych.

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

Zobacz też

ODMOWA (Transact-SQL)
DOTACJA (Transact-SQL)
OBJECT_ID (Transact-SQL)
ODWOŁAJ (Transact-SQL)
sp_helprotect (Transact-SQL)
Funkcje systemowe (Transact-SQL)