Freigeben über


sys.database_permissions (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Gibt eine Zeile für jede Berechtigung oder Spaltenausnahmeberechtigung in der Datenbank zurück. Für Spalten gibt es eine Zeile für jede Berechtigung, die von der entsprechenden Berechtigung auf Objektebene abweicht. Falls die Spaltenberechtigung mit der entsprechenden Objektberechtigung identisch ist, gibt es dafür keine Zeile, und es wird die Objektberechtigung angewendet.

Important

Berechtigungen auf Spaltenebene überschreiben Berechtigungen auf Objektebene in derselben Entität.

Spaltenname Datentyp Description
class tinyint Identifiziert die Klasse, für die die Berechtigung vorliegt. Weitere Informationen finden Sie unter sys.securable_classes (Transact-SQL).

0 = Datenbank
1 = Objekt oder Spalte
3 = Schema
4 = Datenbankprinzipal
5 = Assembly – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
6 = Typ
10 = XML-Schemasammlung -
Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen
15 = Nachrichtentyp – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
16 = Servicevertrag – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
17 = Dienst – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
18 = Remotedienstbindung – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
19 = Route – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
23 =Volltextkatalog – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
24 = Symmetrischer Schlüssel – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
25 = Zertifikat – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
26 = asymmetrischer Schlüssel – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
29 = Fulltext Stoplist – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
31 = Sucheigenschaftsliste – Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen.
32 = Anmeldeinformationen mit Datenbankbereich – Gilt für: SQL Server 2016 (13.x) und höhere Versionen.
34 = Externe Sprache – Gilt für: SQL Server 2019 (15.x) und höhere Versionen.
class_desc nvarchar(60) Beschreibung der Klasse, in der die Berechtigung vorhanden ist.

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

VOLLTEXT-STOPPLISTE

Immobilienliste durchsuchen

DATENBANKBEREICHSBEZOGENE ANMELDEINFORMATIONEN

FREMDSPRACHE
major_id int ID des Objekts, für das die Berechtigung vorhanden ist, interpretiert nach der Klasse. In der Regel ist die major_id art der ID, die für die Darstellung der Klasse gilt.

0 = Die Datenbank selbst

>0 = Objekt-IDs für Benutzerobjekte

<0 = Object-IDs für Systemobjekte
minor_id int Sekundäre ID des Objekts, für das die Berechtigung vorhanden ist, interpretiert nach der Klasse. minor_id Dies ist häufig null, da für die Objektklasse keine Unterkategorie verfügbar ist. Andernfalls handelt es sich um die Spalten-ID einer Tabelle.
grantee_principal_id int Datenbankprinzipal-ID, der die Berechtigungen erteilt werden.
grantor_principal_id int Datenbankprinzipal-ID des Berechtigenden dieser Berechtigungen.
type char(4) Datenbank-Berechtigungstyp. Eine Liste der Berechtigungstypen finden Sie in der folgenden Tabelle.
permission_name nvarchar(128) Erlaubnisname.
state char(1) Erlaubnis:

D = Verweigern

R = Aufheben

G = Erteilen

W = Erteilen mit WITH GRANT OPTION
state_desc nvarchar(60) Beschreibung des Berechtigungsstatus:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Datenbankberechtigungen

Die folgenden Arten von Berechtigungen sind möglich.

Berechtigungstyp Berechtigungsname Betroffenes sicherungsfähiges Element
AADS ÄNDERN EINER DATENBANK-EREIGNISSESSION DATABASE
AAMK BELIEBIGE MASKE ÄNDERN DATABASE
AEDS ÄNDERE JEDE EXTERNE DATENQUELLE DATABASE
AEFF ÄNDERN EINES BELIEBIGEN EXTERNEN DATEIFORMATS DATABASE
AL ALTER ANWENDUNGSROLLE, ASSEMBLY, ASYMMETRISCHER SCHLÜSSEL, ZERTIFIKAT, VERTRAG, DATENBANK, FULLTEXT-KATALOG, NACHRICHTENTYP, OBJEKT, REMOTEDIENSTBINDUNG, ROLLE, ROUTE, SCHEMA, DIENST, SYMMETRIC KEY, USER, XML SCHEMA COLLECTION
ALAK ÄNDERN EINES ASYMMETRISCHEN SCHLÜSSELS DATABASE
ALAR ÄNDERN EINER BELIEBIGEN ANWENDUNGSROLLE DATABASE
ALAS BELIEBIGE ASSEMBLY ÄNDERN DATABASE
ALCF ÄNDERN EINES BELIEBIGEN ZERTIFIKATS DATABASE
ALDS ÄNDERN EINES BELIEBIGEN DATENBEREICHS DATABASE
ALED Benachrichtigungen zu Datenbankereignissen ändern DATABASE
ALFT ÄNDERN EINES VOLLSTÄNDIGEN TEXTKATALOGS DATABASE
ALMT ÄNDERN EINES BELIEBIGEN NACHRICHTENTYPS DATABASE
ALRL ÄNDERN EINER BELIEBIGEN ROLLE DATABASE
ALRT ÄNDERN EINER BELIEBIGEN ROUTE DATABASE
ALSB ÄNDERN JEDER REMOTE-DIENST-BINDUNG DATABASE
ALSC ÄNDERN EINES VERTRAGS DATABASE
ALSK ÄNDERN EINES SYMMETRISCHEN SCHLÜSSELS DATABASE
ALSM ÄNDERN EINES BELIEBIGEN SCHEMAS DATABASE
ALSV ÄNDERE JEDEN DIENST DATABASE
ALTG ÄNDERN EINES DATENBANK-DDL-TRIGGERS DATABASE
ALUS ÄNDERN EINES BELIEBIGEN BENUTZERS DATABASE
AUTH AUTHENTICATE DATABASE
BADB SICHERUNGSDATENBANK DATABASE
BALO SICHERUNGSPROTOKOLL DATABASE
CL CONTROL ANWENDUNGSROLLE, ASSEMBLY, ASYMMETRISCHER SCHLÜSSEL, ZERTIFIKAT, VERTRAG, DATENBANK, FULLTEXT-KATALOG, NACHRICHTENTYP, OBJEKT, REMOTEDIENSTBINDUNG, ROLLE, ROUTE, SCHEMA, DIENST, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION
CO CONNECT DATABASE
CORP VERBINDUNGSREPLIKATION DATABASE
CP CHECKPOINT DATABASE
CRAG AGGREGAT ERSTELLEN DATABASE
CRAK ERSTELLEN EINES ASYMMETRISCHEN SCHLÜSSELS DATABASE
CRAS CREATE ASSEMBLY (Erstellen einer Assembly) DATABASE
CRCF ZERTIFIKAT ERSTELLEN DATABASE
CRDB DATENBANK ERSTELLEN DATABASE
CRDF STANDARD ERSTELLEN DATABASE
CRED CREATE-DATABASE-DDL-Ereignisbenachrichtigung DATABASE
CRFN CREATE-FUNKTION DATABASE
CRFT FULLTEXT-KATALOG ERSTELLEN DATABASE
CRMT NACHRICHTENTYP ERSTELLEN DATABASE
CRPR PROZEDUR ERSTELLEN DATABASE
CRQU WARTESCHLANGE ERSTELLEN DATABASE
CRRL ROLLE ERSTELLEN DATABASE
CRRT ROUTE ERSTELLEN DATABASE
CRRU REGEL ERSTELLEN DATABASE
CRSB ERSTELLEN EINER REMOTE-DIENSTBINDUNG DATABASE
CRSC VERTRAG ERSTELLEN DATABASE
CRSK SYMMETRISCHER SCHLÜSSEL ERSTELLEN DATABASE
CRSM SCHEMA ERSTELLEN DATABASE
CRSN SYNONYM ERSTELLEN DATABASE
CRSO Gilt für: SQL Server 2012 (11.x) und höhere Versionen.

SEQUENZ ERSTELLEN
DATABASE
CRSV DIENST ERSTELLEN DATABASE
CRTB CREATE TABLE DATABASE
CRTY TYPE ERSTELLEN DATABASE
CRVW ANSICHT ERSTELLEN DATABASE
CRXS Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen

ERSTELLEN EINER XML-SCHEMAAUFLISTUNG
DATABASE
DABO VERWALTEN VON BULK-OPERATIONEN IN DER DATENBANK DATABASE
DL DELETE DATENBANK, OBJEKT, SCHEMA
EAES AUSFÜHREN EINES BELIEBIGEN EXTERNEN SKRIPTS DATABASE
EX EXECUTE ASSEMBLER-, DATENBANK-, OBJEKT-, SCHEMA-, TYP-, XML-SCHEMASAMMLUNG
IM IMPERSONATE USER
IN INSERT DATENBANK, OBJEKT, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, ASYMMETRISCHER SCHLÜSSEL, ZERTIFIKAT, VERTRAG, DATENBANK, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, SCHEMA, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
SL SELECT DATENBANK, OBJEKT, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN ABONNIEREN VON ABFRAGEBENACHRICHTIGUNGEN DATABASE
TO ÜBERNEHMEN EIGENTUM ASSEMBLY, ASYMMETRISCHER SCHLÜSSEL, ZERTIFIKAT, VERTRAG, DATENBANK, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
UP UPDATE DATENBANK, OBJEKT, SCHEMA
VW Darstellungsdefinition ANWENDUNGSROLLE, ASSEMBLY, ASYMMETRISCHER SCHLÜSSEL, ZERTIFIKAT, VERTRAG, DATENBANK, FULLTEXT-KATALOG, NACHRICHTENTYP, OBJEKT, REMOTEDIENSTBINDUNG, ROLLE, ROUTE, SCHEMA, DIENST, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION
VWCK ANZEIGEN EINER BELIEBIGEN SPALTENVERSCHLÜSSELUNGSSCHLÜSSELDEFINITION DATABASE
VWCM ANZEIGE JEDER SPALTEN-MASTERSCHLÜSSELDEFINITION DATABASE
VWCT ÄNDERUNGSNACHVERFOLGUNG ANZEIGEN TABELLE, SCHEMA
VWDS DATENBANKSTATUS ANZEIGEN DATABASE

REVOKE- und Spalten-Ausnahmeberechtigungen

In den meisten Fällen entfernt der Befehl REVOKE den GRANT- oder DENY-Eintrag aus sys.database_permissions.

Es ist jedoch möglich, Berechtigungen für ein Objekt zu erteilen oder zu verweigern und diese Berechtigung für eine Spalte zu widerrufen. Diese Spalten-Ausnahmeberechtigung wird in sys.database_permissions als REVOKE angezeigt. Betrachten Sie das folgende Beispiel:

GRANT SELECT ON Person.Person TO [Sales];

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

Diese Berechtigungen werden in sys.database_permissions als ein GRANT (in der Tabelle) und ein REVOKE (in der Spalte) angezeigt.

Important

REVOKE unterscheidet sich von DENY, da der Sales Prinzipal weiterhin Zugriff auf die Spalte über andere Berechtigungen hat. Hatten wir Berechtigungen verweigert, anstatt sie zu widerrufen, konnte Sales den Inhalt der Spalte nicht anzeigen, da DENY immer GRANT ersetzt.

Permissions

Jedem Benutzer werden die eigenen Berechtigungen angezeigt. Zum Anzeigen der Berechtigungen für andere Benutzer ist VIEW DEFINITION, ALTER ANY USER oder eine Berechtigung für einen Benutzer erforderlich. Zum Anzeigen benutzerdefinierter Rollen ist ALTER ANY ROLE oder die Mitgliedschaft bei der Rolle erforderlich (z. B. public).

Die Sichtbarkeit der Metadaten in Katalogsichten ist auf sicherungsfähige Elemente eingeschränkt, bei denen der Benutzer entweder der Besitzer ist oder für die dem Benutzer eine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Metadata Visibility Configuration.

Examples

A. Alle Berechtigungen von Datenbankprinzipalen auflisten

Mit der folgenden Abfrage werden die Berechtigungen aufgelistet, die Datenbankprinzipalen ausdrücklich gewährt oder verweigert wurden.

Important

Die Berechtigungen von festen Datenbankrollen werden in sys.database_permissions nicht angezeigt. Daher können Datenbankprinzipale über zusätzliche Berechtigungen verfügen, die hier nicht aufgeführt werden.

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. Auflisten von Berechtigungen für Schemaobjekte in einer Datenbank

Die folgende Abfrage verknüpft sys.database_principals und sys.database_permissionssys.objects und sys.schemas, um Berechtigungen auflisten, die bestimmten Schemaobjekten gewährt oder verweigert wurden.

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. Listenberechtigungen für ein bestimmtes Objekt

Sie können das vorherige Beispiel verwenden, um Berechtigungen abzufragen, die für ein einzelnes Datenbankobjekt spezifisch sind.

Betrachten Sie beispielsweise die folgenden granularen Berechtigungen, die einem Datenbankbenutzer test in der BeispieldatenbankAdventureWorksDW2025gewährt werden:

GRANT SELECT ON dbo.vAssocSeqOrders TO [test];

Suchen Sie die granularen Berechtigungen, die zugewiesen sind: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';

Gibt die Ausgabe zurück:

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

Siehe auch

Nächste Schritte