Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza 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)