Partage via


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 authentification
INSTANCE : Authentification d’instance
DATABASE : Authentification de base de données
WINDOWS : Authentification Windows
EXTERNAL: 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