sys.database_principals (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Gibt eine Zeile für jeden Sicherheitsprinzipal in einer SQL Server-Datenbank zurück.

Hinweis

Microsoft Entra-ID wurde zuvor als Azure Active Directory (Azure AD) bezeichnet.

Spaltenbeschreibungen

Spaltenname Datentyp BESCHREIBUNG
name sysname Der Name des Prinzipals, der innerhalb der Datenbank eindeutig ist.
principal_id int Die ID des Prinzipals, die innerhalb der Datenbank eindeutig ist.
type char(1) Prinzipaltyp:

A = Anwendungsrolle

C = Einem Zertifikat zugeordneter Benutzer

E = Externer Benutzer von Microsoft Entra ID

G = Windows-Gruppe

K = Einem asymmetrischen Schlüssel zugeordneter Benutzer

R = Datenbankrolle

S = SQL-Benutzer

U = Windows-Benutzer

X = Externe Gruppe aus Microsoft Entra-Gruppe oder -Anwendungen
type_desc nvarchar(60) Beschreibung des Prinzipaltyps.

APPLICATION_ROLE

CERTIFICATE_MAPPED_USER

EXTERNAL_USER

WINDOWS_GROUP

ASYMMETRIC_KEY_MAPPED_USER

DATABASE_ROLE

SQL_USER

WINDOWS_USER

EXTERNAL_GROUPS
default_schema_name sysname Der Name, der verwendet werden soll, wenn der SQL-Name kein Schema angibt. NULL für Prinzipale, die nicht vom Typ S, U oder A sind.
create_date datetime Der Zeitpunkt, zu dem der Prinzipal erstellt wurde.
modify_date datetime Der Zeitpunkt, zu dem der Prinzipal zum letzten Mal geändert wurde.
owning_principal_id int ID des Prinzipals, der der Besitzer dieses Prinzipals ist. Alle festen Datenbankrollen sind standardmäßig im Besitz von dbo.
sid varbinary(85) Sicherheits-ID (SID) des Prinzipals. NULL für SYS und INFORMATION SCHEMAS.
is_fixed_role bit Falls 1, stellt diese Zeile einen Eintrag für eine der festen Datenbankrollen dar: db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader oder db_denydatawriter.
authentication_type int Gilt für: SQL Server 2012 (11.x) und höher.

Gibt den Authentifizierungstyp an. Die folgende Auflistung enthält die möglichen Werte und deren Beschreibung.

0: Keine Authentifizierung
1: Instanzauthentifizierung
2: Datenbankauthentifizierung
3: Windows-Authentifizierung
4: Microsoft Entra-Authentifizierung
authentication_type_desc nvarchar(60) Gilt für: SQL Server 2012 (11.x) und höher.

Beschreibung des Authentifizierungstyps. Die folgende Auflistung enthält die möglichen Werte und deren Beschreibung.

NONE: Keine Authentifizierung
INSTANCE: Instanzauthentifizierung
DATABASE: Datenbankauthentifizierung
WINDOWS: Windows-Authentifizierung
EXTERNAL: Microsoft Entra-Authentifizierung
default_language_name sysname Gilt für: SQL Server 2012 (11.x) und höher.

Gibt die Standardsprache für diesen Prinzipal an.
default_language_lcid int Gilt für: SQL Server 2012 (11.x) und höher.

Gibt die Standard-LCID für diesen Prinzipal an.
allow_encrypted_value_modifications bit Gilt für: SQL Server 2016 (13.x) und höher, SQL-Datenbank.

Verhindert bei Massenkopiervorgängen kryptografische Metadatenüberprüfungen auf dem Server. Hiermit können Benutzer*innen mit Always Encrypted verschlüsselte Daten per Massenvorgang zwischen Tabellen oder Datenbanken kopieren, ohne die Daten zu entschlüsseln. Der Standardwert ist OFF.

Bemerkungen

Die PasswordLastSetTime-Eigenschaften sind in allen unterstützten Konfigurationen von SQL Server verfügbar, die anderen Eigenschaften jedoch nur, wenn SQL Server unter Windows Server 2003 oder höher ausgeführt wird und CHECK_POLICY und CHECK_EXPIRATION aktiviert sind. Weitere Informationen finden Sie unter Kennwortrichtlinie. Die Werte von „principal_id“ können wiederverwendet werden, wenn Prinzipale gelöscht wurden, daher ist nicht garantiert, dass sie ständig steigen.

Berechtigungen

Jeder Benutzer kann den eigenen Benutzernamen, die Systembenutzer und die festen Datenbankrollen anzeigen. Zum Anzeigen anderer Benutzer ist ALTER ANY USER oder eine Berechtigung für den Benutzer erforderlich. Zum Anzeigen benutzerdefinierter Rollen ist ALTER ANY ROLE oder die Mitgliedschaft in der Rolle erforderlich.

Beispiele

A: Auflisten aller Berechtigungen von Datenbankprinzipalen

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

Wichtig

Die Berechtigungen von festen Datenbankrollen werden nicht in sys.database_permissions aufgeführt. 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  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id;  

G. Auflisten von Berechtigungen für Schemaobjekte in einer Datenbank

Die folgende Abfrage verknüpft sys.database_principals und sys.database_permissions mit sys.objects und sys.schemas, um Berechtigungen aufzulisten, 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  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id  
JOIN sys.objects AS o  
    ON pe.major_id = o.object_id  
JOIN sys.schemas AS s  
    ON o.schema_id = s.schema_id;  

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

C: Auflisten aller Berechtigungen von Datenbankprinzipalen

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  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id;  

D. Auflisten von Berechtigungen für Schemaobjekte in einer Datenbank

Die folgende Abfrage verknüpft sys.database_principals und sys.database_permissions zu sys.objects und sys.schemas, um erteilte oder abgelehnte Berechtigungen für bestimmte Schemaobjekte aufzulisten.

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  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id  
JOIN sys.objects AS o  
    ON pe.major_id = o.object_id  
JOIN sys.schemas AS s  
    ON o.schema_id = s.schema_id;  

Weitere Informationen

Prinzipale (Datenbank-Engine)
sys.server_principals (Transact-SQL)
Sicherheitskatalogsichten (Transact-SQL)
Eigenständige Datenbankbenutzer – Generieren einer portablen Datenbank
Verbinden ing to Azure SQL with Microsoft Entra authentication