Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-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)