Sdílet prostřednictvím


sys.database_permissions (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Vrátí řádek pro každé oprávnění nebo oprávnění výjimky sloupce v databázi. Pro sloupce existuje řádek pro každé oprávnění, které se liší od odpovídajícího oprávnění na úrovni objektu. Pokud je oprávnění sloupce stejné jako odpovídající oprávnění objektu, neexistuje pro něj žádný řádek a použité oprávnění je objekt.

Important

Oprávnění na úrovni sloupce přepisuje oprávnění na úrovni objektu ve stejné entitě.

Název sloupce Datový typ Description
class tinyint Identifikuje třídu, pro kterou existuje oprávnění. Další informace naleznete v tématu sys.securable_classes (Transact-SQL).

0 = Databáze
1 = objekt nebo sloupec
3 = schéma
4 = objekt zabezpečení databáze
5 = Sestavení – platí pro: SQL Server 2008 (10.0.x) a novější verze.
6 = Typ
10 = Kolekce schémat XML –
platí pro: SQL Server 2008 (10.0.x) a novější verze.
15 = Typ zprávy – platí pro: SQL Server 2008 (10.0.x) a novější verze.
16 = Servisní kontrakt – platí pro: SQL Server 2008 (10.0.x) a novější verze.
17 = Služba – platí pro: SQL Server 2008 (10.0.x) a novější verze.
18 = Vazba vzdálené služby – platí pro: SQL Server 2008 (10.0.x) a novější verze.
19 = Trasa – platí pro: SQL Server 2008 (10.0.x) a novější verze.
23 = katalogFull-Text – platí pro: SQL Server 2008 (10.0.x) a novější verze.
24 = symetrický klíč – platí pro: SQL Server 2008 (10.0.x) a novější verze.
25 = Certifikát – platí pro: SQL Server 2008 (10.0.x) a novější verze.
26 = Asymetrický klíč – platí pro: SQL Server 2008 (10.0.x) a novější verze.
29 = Fulltext Stoplist - platí pro: SQL Server 2008 (10.0.x) a novější verze.
31 = Seznam vlastností vyhledávání – platí pro: SQL Server 2008 (10.0.x) a novější verze.
32 = Přihlašovací údaje s vymezeným oborem databáze – platí pro: SQL Server 2016 (13.x) a novější verze.
34 = Externí jazyk – platí pro: SQL Server 2019 (15.x) a novější verze.
class_desc nvarchar(60) Popis třídy, pro kterou existuje oprávnění.

DATABASE

OBJECT_OR_COLUMN

SCHEMA

DATABASE_PRINCIPAL

ASSEMBLY

TYPE

XML_SCHEMA_COLLECTION

MESSAGE_TYPE

SERVICE_CONTRACT

SERVICE

REMOTE_SERVICE_BINDING

ROUTE

FULLTEXT_CATALOG

SYMMETRIC_KEYS

CERTIFICATE

ASYMMETRIC_KEY

SEZNAM ZASTAVENÝCH SLOV PRO ÚPLNÝ TEXT

SEZNAM VLASTNOSTÍ HLEDÁNÍ

PŘIHLAŠOVACÍ ÚDAJE V OBORU DATABÁZE

EXTERNÍ JAZYK
major_id int ID věci, na které existuje oprávnění, interpretováno podle třídy. Obvykle major_id jednoduše druh ID, který se vztahuje na to, co třída představuje.

0 = samotná databáze

>0 = Object-IDs pro uživatelské objekty

<0 = Object-IDs pro systémové objekty
minor_id int Secondary-ID věcí, na kterých existuje oprávnění, interpretováno podle třídy. minor_id je často nula, protože pro třídu objektu není k dispozici žádná podkategorie. V opačném případě se jedná o Column-ID tabulky.
grantee_principal_id int ID instančního objektu databáze, ke kterému jsou udělena oprávnění.
grantor_principal_id int ID instančního objektu databáze udělovače těchto oprávnění.
type char(4) Typ oprávnění databáze. Seznam typů oprávnění najdete v další tabulce.
permission_name nvarchar(128) Jméno povolení.
state char(1) Povolení uvádí:

D = Odepřít

R = Odvolat

G = Grant

W = Grant s opcí na grant
state_desc nvarchar(60) Popis stavu oprávnění:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Oprávnění k databázi

Jsou možné následující typy oprávnění.

Typ oprávnění Název oprávnění Platí pro zabezpečitelné
AADS ZMĚNA JAKÉHOKOLI SEZENÍ UDÁLOSTÍ DATABÁZE DATABASE
AAMK ZMĚNIT JAKOUKOLIV MASKU DATABASE
AEDS UPRAVIT JAKÝKOLIV EXTERNÍ ZDROJ DAT DATABASE
AEFF ZMĚNIT JAKÝKOLI EXTERNÍ FORMÁT SOUBORU DATABASE
AL ALTER ROLE APLIKACE, SESTAVENÍ, ASYMETRICKÉ KLÍČE, CERTIFIKÁT, KONTRAKT, DATABÁZE, FULLTEXT KATALOG, TYP ZPRÁVY, OBJEKT, VZDÁLENÁ VAZBA SLUŽBY, ROLE, TRASA, SCHÉMA, SLUŽBA, SYMETRICKÝ KLÍČ, UŽIVATEL, KOLEKCE SCHÉMAT XML
ALAK ZMĚNIT JAKÝKOLI ASYMETRICKÝ KLÍČ DATABASE
ALAR ZMĚNIT JAKOUKOLI APLIKAČNÍ ROLI DATABASE
ALAS ZMĚNIT JAKOUKOLI SLOŽKU DATABASE
ALCF Upravit jakýkoli certifikát DATABASE
ALDS ZMĚNIT JAKÝKOLIV DATOVÝ PROSTOR DATABASE
ALED UPRAVIT JAKÁKOLI OZNÁMENÍ O UDÁLOSTI DATABÁZE DATABASE
ALFT ZMĚNIT JAKÝKOLI FULLTEXTOVÝ KATALOG DATABASE
ALMT ZMĚNIT JAKÝKOLI TYP ZPRÁVY DATABASE
ALRL ZMĚNIT JAKOUKOLI ROLI DATABASE
ALRT ZMĚNIT JAKOUKOLI TRASU DATABASE
ALSB "Povolit úpravy jakéhokoliv vzdáleného služebního propojení" DATABASE
ALSC ZMĚNIT JAKOUKOLI SMLOUVU DATABASE
ALSK ZMĚNIT JAKÝKOLIV SYMMETRICKÝ KLÍČ DATABASE
ALSM ZMĚNIT JAKÉKOLIV SCHÉMA DATABASE
ALSV ZMĚNIT LIBOVOLNOU SLUŽBU DATABASE
ALTG ALTER ANY DATABÁZOVÝ DDL TRIGGER DATABASE
ALUS ZMĚNA LIBOVOLNÉHO UŽIVATELE DATABASE
AUTH AUTHENTICATE DATABASE
BADB ZÁLOHOVAT DATABÁZI DATABASE
BALO ZÁLOHOVACÍ ZÁZNAM DATABASE
CL CONTROL ROLE APLIKACE, SESTAVENÍ, ASYMETRICKÉ KLÍČE, CERTIFIKÁT, KONTRAKT, DATABÁZE, KATALOG FULLTEXT, TYP ZPRÁVY, OBJEKT, VZDÁLENÁ VAZBA SLUŽBY, ROLE, TRASA, SCHÉMA, SLUŽBA, SYMETRICKÝ KLÍČ, TYP, UŽIVATEL, KOLEKCE SCHÉMAT XML
CO CONNECT DATABASE
CORP REPLIKACE CONNECT DATABASE
CP CHECKPOINT DATABASE
CRAG VYTVOŘIT AGREGÁT DATABASE
CRAK VYTVOŘENÍ ASYMETRICKÉHO KLÍČE DATABASE
CRAS CREATE ASSEMBLY (vytvořit sestavení) DATABASE
CRCF VYTVOŘENÍ CERTIFIKÁTU DATABASE
CRDB VYTVOŘIT DATABÁZI DATABASE
CRDF VYTVOŘIT VÝCHOZÍ DATABASE
CRED VYTVOŘENÍ OZNÁMENÍ UDÁLOSTI DDL DATABÁZE DATABASE
CRFN VYTVOŘIT FUNKCI DATABASE
CRFT VYTVOŘIT FULLTEXT KATALOG DATABASE
CRMT VYTVOŘENÍ TYPU ZPRÁVY DATABASE
CRPR VYTVOŘENÍ POSTUPU DATABASE
CRQU VYTVOŘIT FRONTU DATABASE
CRRL VYTVOŘIT ROLI DATABASE
CRRT VYTVOŘIT TRASU DATABASE
CRRU VYTVOŘIT PRAVIDLO DATABASE
CRSB VYTVOŘENÍ VAZBY VZDÁLENÉ SLUŽBY DATABASE
CRSC VYTVOŘIT SMLOUVU DATABASE
CRSK VYTVOŘENÍ SYMETRICKÉHO KLÍČE DATABASE
CRSM VYTVOŘIT SCHÉMA DATABASE
CRSN VYTVOŘIT SYNONYMUM DATABASE
CRSO platí pro: SQL Server 2012 (11.x) a novější verze.

VYTVOŘIT SEKVENCI
DATABASE
CRSV VYTVOŘIT SLUŽBU DATABASE
CRTB CREATE TABLE DATABASE
CRTY VYTVOŘIT TYP DATABASE
CRVW VYTVOŘIT ZOBRAZENÍ DATABASE
CRXS platí pro: SQL Server 2008 (10.0.x) a novější verze.

VYTVOŘENÍ KOLEKCE SCHÉMAT XML
DATABASE
DABO SPRÁVA HROMADNÝCH OPERACÍ DATABÁZE DATABASE
DL DELETE DATABÁZE, OBJEKT, SCHÉMA
EAES SPUŠTĚNÍ LIBOVOLNÉHO EXTERNÍHO SKRIPTU DATABASE
EX EXECUTE SESTAVENÍ, DATABÁZE, OBJEKT, SCHÉMA, TYP, KOLEKCE SCHÉMAT XML
IM IMPERSONATE USER
IN INSERT DATABÁZE, OBJEKT, SCHÉMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLER, ASYMETRICKÝ KLÍČ, CERTIFIKÁT, SMLOUVA, DATABÁZE, KATALOG PLNÉHO TEXTU, TYP ZPRÁVY, OBJEKT, SCHÉMA, SYMETRICKÝ KLÍČ, TYP, XML SCHÉMA KOLEKCE
SL SELECT DATABÁZE, OBJEKT, SCHÉMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN PŘIHLÁŠENÍ K ODBĚRU OZNÁMENÍ DOTAZŮ DATABASE
TO PŘEVEZMĚTE ODPOVĚDNOST ASSEMBLER, ASYMETRICKÝ KLÍČ, CERTIFIKÁT, KONTRAKT, DATABÁZE, KATALOG PLNÉHO TEXTU, TYP ZPRÁVY, OBJEKT, VZDÁLENÉ VAZBY SLUŽBY, ROLE, ROUTE, SCHÉMA, SLUŽBA, SYMETRICKÝ KLÍČ, TYP, XML SCHÉMA KOLEKCE
UP UPDATE DATABÁZE, OBJEKT, SCHÉMA
VW ZOBRAZIT DEFINICI ROLE APLIKACE, SESTAVENÍ, ASYMETRICKÉ KLÍČE, CERTIFIKÁT, KONTRAKT, DATABÁZE, KATALOG FULLTEXT, TYP ZPRÁVY, OBJEKT, VZDÁLENÁ VAZBA SLUŽBY, ROLE, TRASA, SCHÉMA, SLUŽBA, SYMETRICKÝ KLÍČ, TYP, UŽIVATEL, KOLEKCE SCHÉMAT XML
VWCK ZOBRAZENÍ DEFINICE ŠIFROVACÍHO KLÍČE SLOUPCE DATABASE
VWCM ZOBRAZENÍ DEFINICE HLAVNÍHO KLÍČE SLOUPCE DATABASE
VWCT ZOBRAZIT SLEDOVÁNÍ ZMĚN TABULKA, SCHÉMA
VWDS ZOBRAZIT STAV DATABÁZE DATABASE

OPRÁVNĚNÍ K ODVOLÁNÍ a výjimce sloupců

Ve většině případů příkaz REVOKE odebere položku GRANT nebo ODEPŘÍT z sys.database_permissions.

U objektu je však možné udělit nebo odepřít oprávnění a pak toto oprávnění odvolat u sloupce. Toto oprávnění k výjimce sloupce se v sys.database_permissions zobrazí jako REVOKE. Podívejte se na následující příklad:

GRANT SELECT ON Person.Person TO [Sales];

REVOKE SELECT ON Person.Person(AdditionalContactInfo) FROM [Sales];

Tato oprávnění se zobrazí v sys.database_permissions jako jeden GRANT (v tabulce) a jeden REVOKE (ve sloupci).

Important

ODVOLÁNÍ se liší od ODEPŘÍT, protože Sales objekt zabezpečení může mít stále přístup ke sloupci prostřednictvím jiných oprávnění. Pokud jsme odepřeli oprávnění místo jejich odvolání, Sales by nemohl zobrazit obsah sloupce, protože DENY vždy nahrazuje GRANT.

Permissions

Každý uživatel může zobrazit vlastní oprávnění. Pokud chcete zobrazit oprávnění pro ostatní uživatele, vyžaduje ZOBRAZENÍ DEFINICE, ALTER ANY USER nebo jakékoli oprávnění pro uživatele. Chcete-li zobrazit uživatelem definované role, vyžaduje ALTER ANY ROLE nebo členství v roli (například veřejné).

Viditelnost metadat v zobrazeních katalogu je omezená na zabezpečitelné, které uživatel vlastní nebo na kterých uživatel udělil určité oprávnění. Další informace naleznete v tématu konfigurace viditelnosti metadat.

Examples

A. Výpis všech oprávnění objektů zabezpečení databáze

Následující dotaz zobrazí seznam oprávnění explicitně udělených nebo odepřených objektům zabezpečení databáze.

Important

Oprávnění pevných databázových rolí se v sys.database_permissionsnezobrazují . Instanční objekty databáze proto můžou mít další oprávnění, která tady nejsou uvedená.

SELECT pr.principal_id
    ,pr.name
    ,pr.type_desc
    ,pr.authentication_type_desc
    ,pe.state_desc
    ,pe.permission_name  
FROM sys.database_principals AS pr  
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id;  

B. Výpis oprávnění k objektům schématu v databázi

Následující dotaz spojí sys.database_principals a sys.database_permissions k sys.objects a sys.schemas k výpisu oprávnění udělených nebo odepřených konkrétním objektům schématu.

SELECT pr.principal_id
    ,pr.name
    ,pr.type_desc
    ,pr.authentication_type_desc
    ,pe.state_desc
    ,pe.permission_name
    ,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id;

C. Seznam oprávnění pro konkrétní objekt

Pomocí předchozího příkladu můžete dotazovat oprávnění specifická pro jeden databázový objekt.

Představte si například následující podrobná oprávnění udělená uživateli databáze vukázkové databáze :

GRANT SELECT ON dbo.vAssocSeqOrders TO [test];

Vyhledejte podrobná oprávnění přiřazená k dbo.vAssocSeqOrders:

SELECT pr.principal_id
    ,pr.name
    ,pr.type_desc
    ,pr.authentication_type_desc
    ,pe.state_desc
    ,pe.permission_name
    ,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE o.name = 'vAssocSeqOrders'
    AND s.name = 'dbo';

Vrátí výstup:

principal_id    name    type_desc    authentication_type_desc    state_desc    permission_name    ObjectName
5    test    SQL_USER    INSTANCE    GRANT    SELECT    dbo.vAssocSeqOrders

Viz také

Další kroky