sys.database_principals (Transact-SQL)

S’applique à : ouiSQL Server (toutes les versions prises en charge) OuiAzure SQL Database OuiAzure SQL Managed Instance ouiAzure Synapse Analytics OuiParallel Data Warehouse

Retourne une ligne pour chaque principal de sécurité d'une base de données dans SQL Server.

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 de Azure Active Directory

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 du groupe Azure Active Directory ou des applications
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 SQL nom 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 : aucune authentification
1 : authentification de l’instance
2 : authentification de base de données
3 : authentification Windows
4 : authentification Azure Active Directory
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 de l’instance
DATABASE : Authentification de base de données
WINDOWS: Windows l’authentification
EXTERNAL: Azure Active Directory l’authentification
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 à l’aide de Always Encrypted, entre des tables ou des bases de données, sans déchiffrer les données. La valeur par défaut est OFF.

Remarques

les propriétés PasswordLastSetTime sont disponibles sur toutes les configurations prises en charge de SQL Server, mais les autres propriétés ne sont disponibles que lorsque SQL Server s’exécute sur Windows Server 2003 ou version ultérieure et que les CHECK_POLICY et les CHECK_EXPIRATION sont activés. Pour plus d’informations, consultez stratégie de mot de passe . Les valeurs de la principal_id peuvent être réutilisées dans le cas où les principaux ont été supprimés et qu’il n’est donc pas garanti qu’elles soient toujours plus nombreuses.

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 : liste 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 des 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 à 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 de sécurité (Transact-SQL)
Utilisateurs de base de données à relation contenant-contenu-rendre votre base de données portable
Connexion à SQL Database avec l’authentification Azure Active Directory