sys.database_principals (Transact-SQL)
Gilt für:SQL Server (alle unterstützten Versionen)
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Gibt eine Zeile für jeden Sicherheitsprinzipal in einer SQL Server Datenbank zurück.
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 aus Azure Active Directory G = Windows-Gruppe K = Einem asymmetrischen Schlüssel zugeordneter Benutzer R = Datenbankrolle S = SQL-Benutzer U = Windows-Benutzer X = Externe Gruppe aus Azure Active Directory 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 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. Nachfolgend sind die möglichen Werte und deren Beschreibungen aufgeführt. 0 : Keine Authentifizierung 1: Instanzauthentifizierung 2: Datenbankauthentifizierung 3 : Windows-Authentifizierung 4 : Azure Active Directory Authentifizierung |
authentication_type_desc | nvarchar(60) | Gilt für: SQL Server 2012 (11.x) und höher. Beschreibung des Authentifizierungstyps. Nachfolgend sind die möglichen Werte und deren Beschreibungen aufgeführt. NONE : Keine AuthentifizierungINSTANCE : InstanzauthentifizierungDATABASE : DatenbankauthentifizierungWINDOWS : Windows-AuthentifizierungEXTERNAL : Azure Active Directory 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. Dadurch kann der Benutzer Daten massenverschlüsselt kopieren, die mithilfe von Always Encrypted, zwischen Tabellen oder Datenbanken verschlüsselt werden, ohne die Daten zu entschlüsseln. Der Standardwert ist OFF. |
Hinweise
Die PasswordLastSetTime-Eigenschaften sind für alle unterstützten Konfigurationen von SQL Server verfügbar, aber die anderen Eigenschaften sind nur verfügbar, wenn SQL Server auf Windows Server 2003 oder höher ausgeführt wird und sowohl CHECK_POLICY als auch CHECK_EXPIRATION aktiviert sind. Weitere Informationen finden Sie unter Kennwortrichtlinie . Die Werte der principal_id können wiederverwendet werden, wenn Prinzipale verworfen wurden und daher nicht garantiert werden, dass sie immer größer werden.
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 nicht in sys.database_permissions
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 folgenden Abfrage-Verknüpfungen und sys.objects
sys.database_permissions
sys.schemas
Listenberechtigungen, die bestimmten Schemaobjekten sys.database_principals
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;
Weitere Informationen
Prinzipale (Datenbank-Engine)
sys.server_principals (Transact-SQL)
Sicherheitskatalogsichten (Transact-SQL)
Eigenständige Datenbankbenutzer – Generieren einer portablen Datenbank
Herstellen einer Verbindung mit SQL-Datenbank unter Verwendung der Azure Active Directory-Authentifizierung