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
Értékeli a jelenlegi felhasználó tényleges engedélyét egy biztosított eszközön. Egy kapcsolódó funkció fn_my_permissions.
Transact-SQL szintaxis konvenciók
Szemantika
HAS_PERMS_BY_NAME ( securable , securable_class , permission
[ , sub-securable ] [ , sub-securable_class ] )
Arguments
Securable
Ez a biztosított név. Ha a biztosítható maga a szerver, akkor ezt az értéket NULL-ra kell állítani.
Securable a sysname típus skaláris kifejezése. Nincs alapértelmezett megoldás.
securable_class
Az a securable osztály neve, amelyen az engedélyt tesztelték.
securable_class az nvarchar(60) típusú skalár kifejezés.
Az Azure SQL Database-ben a securable_class argumentumot az alábbiak egyikére kell beállítani: DATABASE,OBJECT, ROLE,SCHEMA vagy USER.
engedély
Egy nem null skaláris kifejezés sysname típussal, amely a ellenőrizendő jogosultságnévet képviseli. Nincs alapértelmezett megoldás. Az engedély neve ANY vaker név.
al-securable
Egy opcionális skaláris kifejezés sysname típussal, amely a biztosítható alentitás nevét jelenti, amelyhez az engedélyt teszteljük. Az alapértelmezett NULL.
Megjegyzés:
Az al-securable-ek nem használhatnak zárójeleket '[alnév]' formában. Használj helyette a 'alcímet' .
al-securable_class
Egy opcionális skaláris kifejezés nvarchar(60) típusú, amely azt a biztosítható alentitás osztályát képviseli, amelyhez az engedélyt tesztelték. Az alapértelmezett NULL.
Az Azure SQL Database-ben a sub-securable_class argumentum csak akkor érvényes, ha az securable_class argumentum OBJECT-re van állítva. Ha az securable_class argumentumot OBJECT-re állították, akkor az al-securable_class argumentumot COLUMN-re kell állítani.
Visszatérési típusok
int
A lekérdezés sikertelenségében NULL-t ad vissza.
Megjegyzések
Ez a beépített függvény azt vizsgálja, hogy a jelenlegi megtíz rendelkezik-e egy meghatározott biztosított joggal adott tényleges jogosultsággal. HAS_PERMS_BY_NAME akkor 1-et ad vissza, ha a felhasználónak hatékony jogosultsága van a securable-en, 0-t, ha nincs hatékony jogosultsága a securable-re, és NULL-t, ha a securable osztály vagy engedély nem érvényes. A hatékony engedély az alábbiak egyike:
Engedély, amelyet közvetlenül az igazgatónak adnak, és nem tagadtak meg.
Ez egy magasabb szintű engedély által feltételezett engedély, amelyet az igazgató birtokol, és nem tagadják meg.
Olyan engedély, amelyet egy olyan szerepnek vagy csoportnak adnak, amelynek a főnöke tagja, és amelyet nem tagadnak meg.
Egy olyan szerep vagy csoport engedélye, amelynek a főnök tagja, és amelyet nem tagadnak meg.
Az engedélyértékelést mindig a hívó biztonsági kontextusában végzik. Ahhoz, hogy megállapítsuk, van-e egy másik felhasználónak hatékony engedélye, a hívónak IMPERSONATE engedélyt kell adnia az adott felhasználón.
Sémaszintű entitások esetén egy-, két- vagy háromrészes nemnull neveket fogadnak. Adatbázis-szintű entitások esetén egyrészes név elfogadható, amelynek null értéke "aktuális adatbázist" jelent. Magához a szerverhez null érték (azaz "aktuális szerver") szükséges. Ez a funkció nem tudja ellenőrizni a jogosultságokat egy összekapcsolt szerveren vagy olyan Windows felhasználón, amelyhez nem hoztak létre szerverszintű alapvetélyt.
A következő lekérdezés a beépített securable osztályok listáját adja vissza:
SELECT class_desc FROM sys.fn_builtin_permissions(default);
Az alábbi összeállításokat használják:
Jelenlegi adatbázis-összeállítás: Adatbázis-szintű értékpapírok, amelyek tartalmazzák azokat a biztosítottakat, amelyeket nem tartalmaz séma; egy- vagy kétrészes séma-szkópú értékpapírokat; Cél adatbázis, ha háromrészes nevet használsz.
Fő adatbázis-összeállítás: Szerverszintű biztonsági adatok.
Az 'ANY' nem támogatott oszlopszintű ellenőrzésekhez. Meg kell határoznia a megfelelő engedélyt.
Példák
A. Van szerverszintű VIEW SERVER STATE jogosultságom?
Érvényes: SQL Server 2008 (10.0.x) és újabb verziókra
SELECT HAS_PERMS_BY_NAME(null, null, 'VIEW SERVER STATE');
B. Képes vagyok szerver fő P-t személyesen megjeleníteni?
Érvényes: SQL Server 2008 (10.0.x) és újabb verziókra
SELECT HAS_PERMS_BY_NAME('Ps', 'LOGIN', 'IMPERSONATE');
C. Vannak valamilyen jogosultságom a jelenlegi adatbázisban?
SELECT HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'ANY');
D. Van valamilyen jogosultsága az adatbázis fő Pd-nek a jelenlegi adatbázisban?
Tegyük fel, hogy a hívónak megvan a SZEMÉLYESKEDÉS engedélye a fő Pdjogon.
EXECUTE AS user = 'Pd'
GO
SELECT HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'ANY');
GO
REVERT;
GO
E. Létrehozhatok eljárásokat és táblákat S sémában?
A következő példa engedélyt igényel ALTER az S adatbázisban és CREATE PROCEDURE az adatbázisban, hasonlóan a táblákhoz.
SELECT HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'CREATE PROCEDURE')
& HAS_PERMS_BY_NAME('S', 'SCHEMA', 'ALTER') AS _can_create_procs,
HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'CREATE TABLE') &
HAS_PERMS_BY_NAME('S', 'SCHEMA', 'ALTER') AS _can_create_tables;
F. Melyik táblákon van SELECT engedélyem?
SELECT HAS_PERMS_BY_NAME
(QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name),
'OBJECT', 'SELECT') AS have_select, * FROM sys.tables
G. Van INSERT engedélyem az SalesPerson táblán az AdventureWorks2022-ben?
A következő példa AdventureWorks2025 feltételezi a jelenlegi adatbázis kontextusomat, és két részes nevet használ.
SELECT HAS_PERMS_BY_NAME('Sales.SalesPerson', 'OBJECT', 'INSERT');
A következő példa nem feltételez a jelenlegi adatbázis kontextusomról, és háromrészes nevet használ.
SELECT HAS_PERMS_BY_NAME('AdventureWorks2022.Sales.SalesPerson',
'OBJECT', 'INSERT');
H. A T tábla melyik oszlopainál van SELECT engedélyem?
SELECT name AS column_name,
HAS_PERMS_BY_NAME('T', 'OBJECT', 'SELECT', name, 'COLUMN')
AS can_select
FROM sys.columns AS c
WHERE c.object_id=object_id('T');
Lásd még:
Engedélyek (Adatbázis-motor)
Securables
Engedélyhierarchia (adatbázismotor)
sys.fn_builtin_permissions (Transact-SQL)
Biztonságikatalógus nézetei (Transact-SQL)