Sdílet prostřednictvím


sys.database_permissions (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)koncový bod SQL Analytics ve službě Microsoft FabricWarehouse 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.

Důležitý

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

Název sloupce Datový typ Popis
třídy 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í.

DATABÁZE

OBJECT_OR_COLUMN

SCHÉMA

DATABASE_PRINCIPAL

SHROMÁŽDĚNÍ

TYP

XML_SCHEMA_COLLECTION

MESSAGE_TYPE

SERVICE_CONTRACT

SLUŽBA

REMOTE_SERVICE_BINDING

CESTA

FULLTEXT_CATALOG

SYMMETRIC_KEYS

CERTIFIKÁT

ASYMMETRIC_KEY

FULLTEXT STOPLIST

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í.
typ znak(4) Typ oprávnění databáze. Seznam typů oprávnění najdete v další tabulce.
permission_name nvarchar(128) Název oprávnění
stavu znak (1) Stav oprávnění:

D = Odepřít

R = Odvolat

G = Grant

W = Grant With Grant Option
state_desc nvarchar(60) Popis stavu oprávnění:

POPŘÍT

ODVOLAT

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 ALTER ANY DATABASE EVENT SESSION DATABÁZE
AAMK ALTER ANY MASK DATABÁZE
AEDS ALTER ANY EXTERNAL DATA SOURCE DATABÁZE
AEFF ALTER ANY EXTERNAL FILE FORMAT DATABÁZE
HLINÍK PROMĚNIT 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 ALTER ANY ASYMMETRIC KEY DATABÁZE
ALAR ALTER ANY APPLICATION ROLE DATABÁZE
BĚDA ALTER ANY ASSEMBLY DATABÁZE
ALCF ALTER ANY CERTIFICATE DATABÁZE
ALDS ALTER ANY DATASPACE DATABÁZE
ALED ALTER ANY DATABASE EVENT NOTIFICATION DATABÁZE
ALFT ALTER ANY FULLTEXT CATALOG DATABÁZE
ALMT ALTER ANY MESSAGE TYPE DATABÁZE
ALRL ALTER ANY ROLE DATABÁZE
ALRT ALTER ANY ROUTE DATABÁZE
ALSB ALTER ANY REMOTE SERVICE BINDING DATABÁZE
ALSC ALTER ANY CONTRACT DATABÁZE
ALSK ALTER ANY SYMMETRIC KEY DATABÁZE
ALSM ALTER ANY SCHEMA DATABÁZE
ALSV ALTER ANY SERVICE DATABÁZE
ALTG ALTER ANY DATABASE DDL TRIGGER DATABÁZE
ALUS ALTER ANY USER DATABÁZE
AUTH OVĚŘIT DATABÁZE
BADB ZÁLOHOVAT DATABÁZI DATABÁZE
BALO PROTOKOL ZÁLOHOVÁNÍ DATABÁZE
CL ŘÍZENÍ 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 SPOJIT DATABÁZE
CORP PŘIPOJENÍ REPLIKACE DATABÁZE
CP KONTROLNÍ BOD DATABÁZE
ÚTES CREATE AGGREGATE DATABÁZE
CRAK VYTVOŘENÍ ASYMETRICKÉHO KLÍČE DATABÁZE
CRAS CREATE ASSEMBLY DATABÁZE
CRCF VYTVOŘENÍ CERTIFIKÁTU DATABÁZE
CRDB CREATE DATABASE DATABÁZE
RDF VYTVOŘIT VÝCHOZÍ DATABÁZE
CRED VYTVOŘENÍ OZNÁMENÍ UDÁLOSTI DDL DATABÁZE DATABÁZE
CRFN CREATE FUNCTION DATABÁZE
CRFT VYTVOŘIT FULLTEXT KATALOG DATABÁZE
CRMT VYTVOŘENÍ TYPU ZPRÁVY DATABÁZE
CRPR CREATE PROCEDURE DATABÁZE
CRQU VYTVOŘENÍ FRONTY DATABÁZE
CRRL VYTVOŘENÍ ROLE DATABÁZE
CRRT VYTVOŘIT TRASU DATABÁZE
CRRU VYTVOŘIT PRAVIDLO DATABÁZE
CRSB VYTVOŘENÍ VAZBY VZDÁLENÉ SLUŽBY DATABÁZE
CRSC CREATE CONTRACT DATABÁZE
CRSK VYTVOŘENÍ SYMETRICKÉHO KLÍČE DATABÁZE
CRSM VYTVOŘENÍ SCHÉMATU DATABÁZE
CRSN VYTVOŘIT SYNONYMUM DATABÁZE
CRSO platí pro: SQL Server 2012 (11.x) a novější verze.

CREATE SEQUENCE
DATABÁZE
CRSV CREATE SERVICE DATABÁZE
CRTB CREATE TABLE DATABÁZE
CRTY VYTVOŘIT TYP DATABÁZE
CRVW VYTVOŘIT ZOBRAZENÍ DATABÁZE
CRXS platí pro: SQL Server 2008 (10.0.x) a novější verze.

VYTVOŘENÍ KOLEKCE SCHÉMAT XML
DATABÁZE
DABO SPRÁVA HROMADNÝCH OPERACÍ DATABÁZE DATABÁZE
DL VYMAZAT DATABÁZE, OBJEKT, SCHÉMA
EAES SPUŠTĚNÍ LIBOVOLNÉHO EXTERNÍHO SKRIPTU DATABÁZE
EX PROVÉST SESTAVENÍ, DATABÁZE, OBJEKT, SCHÉMA, TYP, KOLEKCE SCHÉMAT XML
IM ZOSOBŇOVAT UŽIVATEL
V VLOŽIT DATABÁZE, OBJEKT, SCHÉMA
RC OBDRŽET OBJEKT
RF ODKAZY ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, SCHEMA, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
SL VYBRAT DATABÁZE, OBJEKT, SCHÉMA
SN POSLAT SLUŽBA
SPLN SHOWPLAN DATABÁZE
SUQN PŘIHLÁŠENÍ K ODBĚRU OZNÁMENÍ DOTAZŮ DATABÁZE
K PŘEVZÍT VLASTNICTVÍ ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
NAHORU AKTUALIZACE 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 DATABÁZE
VWCM ZOBRAZENÍ DEFINICE HLAVNÍHO KLÍČE SLOUPCE DATABÁZE
VWCT ZOBRAZIT SLEDOVÁNÍ ZMĚN TABLE, SCHEMA
VWDS ZOBRAZIT STAV DATABÁZE DATABÁZE

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).

Důležitý

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.

Dovolení

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.

Příklady

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.

Důležitý

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é

  • zabezpečitelných
  • hierarchie oprávnění (databázový stroj)
  • zobrazení katalogu zabezpečení (Transact-SQL)
  • zobrazení katalogu (Transact-SQL)

Další kroky