Preskočiť na obsah
Skript

Explicitné GRANT / DENY v databáze

Všetky explicitne pridelené a odobraté práva v aktuálnej databáze – na úrovni databázy, schémy, objektu aj stĺpca.

explicitne-grant-deny-v-databaze.sql 23 riadkov · T-SQL
Parametre skriptu doplň a kopíruj hotový skript
/* DeadlockCafe | Explicitné GRANT / DENY v databáze
   Účel:  Všetky explicitne pridelené a odobraté práva v aktuálnej databáze – na úrovni databázy, schémy, objektu aj stĺpca.
   Režim: READ ONLY | SQL Server 2016 – 2022, on-premises
*/
SET NOCOUNT ON;

SELECT DB_NAME()           AS database_name,
       p.name              AS grantee,
       p.type_desc         AS grantee_type,
       pe.state_desc,
       pe.permission_name,
       pe.class_desc,
       CASE WHEN pe.class_desc = 'OBJECT_OR_COLUMN' THEN OBJECT_SCHEMA_NAME(pe.major_id)
            WHEN pe.class_desc = 'SCHEMA'           THEN SCHEMA_NAME(pe.major_id)
       END                 AS schema_name,
       CASE WHEN pe.class_desc = 'OBJECT_OR_COLUMN' THEN OBJECT_NAME(pe.major_id) END AS object_name,
       CASE WHEN pe.class_desc = 'OBJECT_OR_COLUMN' AND pe.minor_id > 0
            THEN COL_NAME(pe.major_id, pe.minor_id) END                              AS column_name,
       pe.major_id, pe.minor_id
FROM sys.database_permissions AS pe
JOIN sys.database_principals AS p ON p.principal_id = pe.grantee_principal_id
ORDER BY p.name, pe.class_desc, pe.permission_name;
## Kedy použiť

Keď dva účty s rovnakými rolami správajú inak, alebo pri audite práv.

## Ako čítať výsledok

`state_desc` = GRANT / DENY / GRANT_WITH_GRANT_OPTION, `class_desc` určuje úroveň (DATABASE, SCHEMA, OBJECT_OR_COLUMN). Pri stĺpcových právach je vyplnený `column_name`. DENY má prednosť pred GRANT.

> [!WARNING]
> Nie je to výpočet efektívnych práv: dedenie z rolí, public, sysadmin, vlastníctvo a AD skupiny tu nie sú rozbalené.

**Oprávnenia:** Viditeľnosť metadát oprávnení v cieľovej databáze. Spúšťa sa v cieľovej databáze.  
**Režim:** READ ONLY · **Verzia:** SQL Server 2016 – 2022

## Súvisiace recepty

- [Členstvo v databázových rolách](script.php?id=36&s=clenstvo-v-databazovych-rolach)