Megosztás a következőn keresztül:


ENGEDÉLYEK (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Egy bitmapet tartalmazó értéket ad vissza, amely a jelenlegi felhasználó utasítás-, objektum- vagy oszlopjogosultságait jelzi.

Fontos

Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását. Használj inkább fn_my_permissions és Has_Perms_By_Name használatát. A PERMISSIONS funkció folyamatos használata lassabb teljesítményt eredményezhet.

Transact-SQL szintaxis konvenciók

Szemantika

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

Arguments

objectid azonosító
Ez egy biztosított azonosító. Ha az objectid nincs megadva, a bitmap érték tartalmazza a jelenlegi felhasználó utasításengedélyeit; egyébként a bitmap tartalmazza a biztosítható jogosultságokat a jelenlegi felhasználó számára. A megadott biztonsági eszköznek a jelenlegi adatbázisban kell lennie. Használd a OBJECT_ID függvényt az objektiid érték meghatározására.

'oszlop'
Az oszlop opcionális neve, amelyhez visszaküldik az engedélyadatokat. Az oszlopnak érvényes oszlopnévnek kell lennie az objectid által megadott táblázatban.

Visszatérési típusok

int

Megjegyzések

A PERMISSIONS segítségével meghatározható, hogy a jelenlegi felhasználó rendelkezik-e a szükséges jogosultságokkal egy állítás végrehajtásához vagy egy másik felhasználónak ENGEDÉLY MEGADÁSÁHOZ.

A visszaadott jogosultsági információ egy 32 bites bitmap.

Az alsó 16 bit a felhasználó által adott jogosultságokat tükrözi, valamint azokat a jogosultságokat, amelyeket a Windows csoportokra vagy a fix szerver szerepekre alkalmaznak, amelyeknek a jelenlegi felhasználó tagja. Például egy 66-os érték (hatszög érték 0x42), amikor nincs objektumazonosító , azt jelzi, hogy a felhasználó jogosult végrehajtani a CREATE TABLE (tizedes érték 2) és a BACKUP DATABASE (tizedes érték 64) utasításokat.

A felső 16 bit tükrözi azokat a jogosultságokat, amelyeket a felhasználó MEGADHAT más felhasználóknak. A felső 16 bitet pontosan úgy értelmezzük, mint az alábbi táblázatokban leírt alsó 16 bitet, kivéve, hogy balra tolják őket 16 bittel (megszorozva 65536-tal). Például a 0x8 (tizedes érték 8) az a bit, amely az INSERT engedélyt jelzi, amikor egy objektumid meg van jelölve. Míg a 0x80000 (tizedes érték 524288) jelzi a HOZZÁADÁS ENGEDÉLYEZÉSÉNEK lehetőségét, mert 524288 = 8 x 65536.

A szerepek tagsága miatt egy olyan felhasználó, akinek nincs engedélye egy kijelentés végrehajtására, még mindig megadhatja ezt a jogot egy másik felhasználónak.

Az alábbi táblázat mutatja azokat a biteket, amelyeket az utasításengedélyekhez használnak (az objectid nincs megadva).

Bit (dec) Bite (hex) Nyilatkozat engedélye
1 0x1 CREATE DATABASE (csak master adatbázis)
2 0x2 CREATE TABLE
4 0x4 AZ ELJÁRÁS LÉTREHOZÁSA
8 0x8 NÉZET LÉTREHOZÁSA
16 0x10 SZABÁLY LÉTREHOZÁSA
32 0x20 LÉTREHOZÁS ALAPÉRTELMEZETTKÉNT
64 0x40 BIZTONSÁGI MENTÉSI ADATBÁZIS
128 0x80 BIZTONSÁGI MENTÉSI NAPLÓ
256 0x100 Fenntartott

Az alábbi táblázat mutatja azokat a biteket, amelyeket objektumjogosultságokhoz használnak, és akkor térnek vissza, ha csak az objektumid van megadva.

Bit (dec) Bite (hex) Nyilatkozat engedélye
1 0x1 VÁLASSZ MINDET
2 0x2 FRISSÍTSD MINDENKIT
4 0x4 HIVATKOZÁSOK MIND
8 0x8 INSERT
16 0x10 töröl
32 0x20 EXECUTE (csak eljárások)
4096 0x1000 VÁLASSZ BÁRMELYIKET (legalább egy oszlopot)
8192 0x2000 FRISSÍTSEK VALAKIT
16384 0x4000 HIVATKOZÁSOK BÁRMILYEN

Az alábbi táblázat mutatja azokat a biteket, amelyeket oszlopszintű objektumjogosultságokhoz használnak, és amelyek akkor térnek vissza, amikor mind az objektumid , mind az oszlop meg van jelölve.

Bit (dec) Bite (hex) Nyilatkozat engedélye
1 0x1 SELECT
2 0x2 Frissítés
4 0x4 REFERENCES

A NULL akkor jelenik meg, ha egy meghatározott paraméter NULL vagy nem érvényes (például egy objektumid vagy oszlop, amely nem létezik). Azok a bitértékek, amelyek nem érvényesek (például EXECUTE engedély, bit 0x20, egy tábla esetén) nem definiáltak.

Használjuk a bitenként ÉS (&) operátort, hogy meghatározd a PERMISSIONS függvény által visszaadott bitmap-ben megjelent minden bithalmazt.

A sp_helprotect rendszer tárolt eljárása arra is használható, hogy visszaadja a felhasználó engedélylistáját a jelenlegi adatbázisban.

Példák

A. A PERMISSIONS funkció használata kijelentés jogosultságokkal

A következő példa határozza meg, hogy a jelenlegi felhasználó képes végrehajtani az CREATE TABLE utasítást.

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

B. A PERMISSIONS funkció használata objektumjogokkal

Az alábbi példa határozza meg, hogy a jelenlegi felhasználó képes leszek-e egy sor adatot az Address adatbázis táblázatába AdventureWorks2025 .

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. A PERMISSIONS funkció használata engedélyezhető jogokkal

A következő példa határozza meg, hogy a jelenlegi felhasználó megadhatja-e az adatbázis táblázatán Address a INSERT engedélyt AdventureWorks2025 egy másik felhasználónak.

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

Lásd még:

MEGTAGADÁS (Transact-SQL)
TÁMOGATÁS (Transact-SQL)
OBJECT_ID (Transact-SQL)
VISSZAVONÁS (Transact-SQL)
sp_helprotect (Transact-SQL)
Rendszerfunkciók (Transact-SQL)