sys.database_principals (Transact-SQL)
S’applique à : point de terminaison d’analytique SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL Analytics dans Microsoft Fabric Warehouse dans Microsoft Fabric
Retourne une ligne pour chaque principal de sécurité d’une base de données dans SQL Server.
Remarque
Microsoft Entra ID était précédemment connu sous le nom d’Azure Active Directory (Azure AD).
Descriptions des colonnes
Nom de la colonne | Type de données | Description |
---|---|---|
name | sysname | Nom du principal, unique dans la base de données. |
principal_id | int | ID du principal, unique dans la base de données. |
type | char(1) | Type de principal : A = rôle d'application C = utilisateur mappé à un certificat E = Utilisateur externe à partir de l’ID Microsoft Entra G = groupe Windows K = utilisateur mappé à une clé asymétrique R = rôle de base de données S = utilisateur SQL U = utilisateur Windows X = Groupe externe à partir du groupe Ou des applications Microsoft Entra |
type_desc | nvarchar(60) | Description du type de principal. 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 | Nom à utiliser lorsque le nom SQL ne spécifie pas de schéma. Null pour les principaux qui ne sont pas de type S, U ou A. |
create_date | datetime | Heure de création du principal. |
modify_date | datetime | Heure de la dernière modification du principal. |
owning_principal_id | int | Identificateur du principal qui possède ce principal. Tous les rôles de base de données fixes sont détenus par dbo par défaut. |
sid | varbinary(85) | SID (identificateur de sécurité) du principal. NULL pour SYS et INFORMATION SCHEMAS. |
is_fixed_role | bit | Avec la valeur 1, cette ligne représente une entrée pour un des rôles de base de données fixes : db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter. |
authentication_type | int | S’applique à : SQL Server 2012 (11.x) et versions ultérieures. Signifie le type d'authentification. Voici les valeurs possibles et leurs descriptions. 0 : Pas d’authentification 1 : Authentification d’instance 2 : Authentification de base de données 3 : Authentification Windows 4 : Authentification Microsoft Entra |
authentication_type_desc | nvarchar(60) | S’applique à : SQL Server 2012 (11.x) et versions ultérieures. Description du type d'authentification. Voici les valeurs possibles et leurs descriptions. NONE : Aucune authentificationINSTANCE : Authentification d’instanceDATABASE : Authentification de base de donnéesWINDOWS : Authentification WindowsEXTERNAL : Authentification Microsoft Entra |
default_language_name | sysname | S’applique à : SQL Server 2012 (11.x) et versions ultérieures. Signifie la langue par défaut de ce principal. |
default_language_lcid | int | S’applique à : SQL Server 2012 (11.x) et versions ultérieures. Signifie le LCID par défaut de ce principal. |
allow_encrypted_value_modifications | bit | S’applique à : SQL Server 2016 (13.x) et versions ultérieures, SQL Database. Supprime les contrôles de métadonnées de chiffrement sur le serveur dans les opérations de copie en bloc. Cela permet à l’utilisateur de copier en bloc des données chiffrées avec Always Encrypted entre des tables ou des bases de données, sans déchiffrer les données. La valeur par défaut est OFF. |
Notes
Les propriétés PasswordLastSetTime sont disponibles sur toutes les configurations de SQL Server prises en charge, mais les autres propriétés ne sont disponibles que si SQL Server est en cours d’exécution sous Windows Server 2003 et versions ultérieures et que CHECK_POLICY et CHECK_EXPIRATION sont tous les deux activés. Pour plus d’informations, consultez Stratégie de mot de passe. Les valeurs de principal_id peuvent être réutilisées dans le cas où les principaux ont été supprimés et, par conséquent, il n’est pas garanti qu’ils soient toujours croissants.
Autorisations
Tout utilisateur peut consulter son nom d'utilisateur, les utilisateurs système et les rôles de base de données fixes. Pour voir les autres utilisateurs, vous devez disposer de l'autorisation ALTER ANY USER, ou d'une autorisation sur l'utilisateur. Pour afficher les rôles définis par l'utilisateur, vous devez disposer de l'autorisation ALTER ANY ROLE, ou appartenir au rôle.
Exemples
A : Énumération de toutes les autorisations des principaux de base de données
La requête suivante énumère les autorisations accordées ou refusées explicitement aux principaux de base de données.
Important
Les autorisations de rôles de base de données fixes n'apparaissent pas dans sys.database_permissions. Par conséquent, les principaux de base de données peuvent avoir des autorisations supplémentaires non répertoriées ici.
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;
B. Énumération des autorisations sur les objets de schéma dans une base de données
La requête suivante joint sys.database_principals et sys.database_permissions à sys.objects et sys.schemas pour répertorier les autorisations accordées ou refusées sur des objets de schéma spécifiques.
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;
Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)
C : Énumération de toutes les autorisations des principaux de base de données
La requête suivante énumère les autorisations accordées ou refusées explicitement aux principaux de base de données.
Important
Les autorisations de rôles de base de données fixes n’apparaissent pas dans sys.database_permissions
. Par conséquent, les principaux de base de données peuvent avoir des autorisations supplémentaires non répertoriées ici.
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 : Énumération des autorisations sur les objets de schéma dans une base de données
La requête suivante joint sys.database_principals
et sys.database_permissions
à sys.objects
et sys.schemas
pour répertorier les autorisations accordées ou refusées sur des objets de schéma spécifiques.
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;
Voir aussi
Principaux (moteur de base de données)
sys.server_principals (Transact-SQL)
Affichages catalogue liées à la sécurité (Transact-SQL)
Utilisateurs de base de données autonome - Rendre votre base de données portable
Connexion à Azure SQL avec l’authentification Microsoft Entra