sys.database_permissions (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Platform System (PDW) SQL Analytics Platform-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric Warehouse

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.

Wichtig

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

Spaltenname Datentyp BESCHREIBUNG
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

FULLTEXT STOPLIST

SEARCH PROPERTY LIST

DATABASE SCOPED CREDENTIAL

EXTERNAL LANGUAGE
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) Berechtigungsname.
state char(1) Der Berechtigungsstatus:

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 ALTER ANY DATABASE EVENT SESSION DATABASE
AAMK ALTER ANY MASK DATABASE
AEDS ALTER ANY EXTERNAL DATA SOURCE DATABASE
AEFF ALTER ANY EXTERNAL FILE FORMAT DATABASE
AL ALTER APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, USER, XML SCHEMA COLLECTION
ALAK ALTER ANY ASYMMETRIC KEY DATABASE
ALAR ALTER ANY APPLICATION ROLE DATABASE
ALAS ALTER ANY ASSEMBLY DATABASE
ALCF ALTER ANY CERTIFICATE DATABASE
ALDS ALTER ANY DATASPACE DATABASE
ALED ALTER ANY DATABASE EVENT NOTIFICATION DATABASE
ALFT ALTER ANY FULLTEXT CATALOG DATABASE
ALMT ALTER ANY MESSAGE TYPE DATABASE
ALRL ALTER ANY ROLE DATABASE
ALRT ALTER ANY ROUTE DATABASE
ALSB ALTER ANY REMOTE SERVICE BINDING DATABASE
ALSC ALTER ANY CONTRACT DATABASE
ALSK ALTER ANY SYMMETRIC KEY DATABASE
ALSM ALTER ANY SCHEMA DATABASE
ALSV ALTER ANY SERVICE DATABASE
ALTG ALTER ANY DATABASE DDL TRIGGER DATABASE
ALUS ALTER ANY USER DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOG DATABASE
CL CONTROL APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION
CO CONNECT DATABASE
CORP CONNECT REPLICATION DATABASE
CP CHECKPOINT DATABASE
CRAG CREATE AGGREGATE DATABASE
CRAK CREATE ASYMMETRIC KEY DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB CREATE DATABASE DATABASE
CRDF CREATE DEFAULT DATABASE
CRED CREATE DATABASE DDL EVENT NOTIFICATION DATABASE
CRFN CREATE FUNCTION DATABASE
CRFT CREATE FULLTEXT CATALOG DATABASE
CRMT CREATE MESSAGE TYPE DATABASE
CRPR CREATE PROCEDURE DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREATE ROLE DATABASE
CRRT CREATE ROUTE DATABASE
CRRU CREATE RULE DATABASE
CRSB CREATE REMOTE SERVICE BINDING DATABASE
CRSC CREATE CONTRACT DATABASE
CRSK CREATE SYMMETRIC KEY DATABASE
CRSM CREATE SCHEMA DATABASE
CRSN CREATE SYNONYM DATABASE
CRSO Gilt für: SQL Server 2012 (11.x) und höhere Versionen.

CREATE SEQUENCE
DATABASE
CRSV CREATE SERVICE DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREATE TYPE DATABASE
CRVW CREATE VIEW DATABASE
CRXS Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen

CREATE XML SCHEMA COLLECTION
DATABASE
DABO ADMINISTER DATABASE BULK OPERATIONS DATABASE
DL DELETE DATABASE, OBJECT, SCHEMA
EAES EXECUTE ANY EXTERNAL SCRIPT DATABASE
EX Führen Sie ASSEMBLY, DATABASE, OBJECT, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT DATABASE, OBJECT, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, SCHEMA, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
SL SELECT DATABASE, OBJECT, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN SUBSCRIBE QUERY NOTIFICATIONS DATABASE
TO TAKE OWNERSHIP ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
UP UPDATE DATABASE, OBJECT, SCHEMA
VW VIEW DEFINITION APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION
VWCK VIEW ANY COLUMN ENCRYPTION KEY DEFINITION DATABASE
VWCM VIEW ANY COLUMN MASTER KEY DEFINITION DATABASE
VWCT VIEW CHANGE TRACKING TABLE, SCHEMA
VWDS VIEW DATABASE STATE DATABASE

Berechtigungen

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.

Beispiele

A. Alle Berechtigungen von Datenbankprinzipalen auflisten

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

Wichtig

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_permissions sys.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 Beispieldatenbank AdventureWorksDW2022gewä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

Weitere Informationen

Nächste Schritte