Partager via


sys.database_principals (Transact-SQL)

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

Nom de 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 du principal :

S = utilisateur SQL

U = utilisateur Windows

G = groupe Windows

A = rôle d'application

R = rôle de base de données

C = utilisateur mappé à un certificat

K = utilisateur mappé à une clé asymétrique

type_desc

nvarchar(60)

Description du type de principal.

SQL_USER

WINDOWS_USER

WINDOWS_GROUP

APPLICATION_ROLE

DATABASE_ROLE

CERTIFICATE_MAPPED_USER

ASYMMETRIC_KEY_MAPPED_USER

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 principaux sauf les rôles de base de données doivent être la propriété de dbo.

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

Signifie le type d'authentification.

Valeur

Description

0

Pas d'authentification

1

Authentification d'instance

2

Authentification de base de données

3

Authentification Windows

Ne s'applique pas à SQL Azure.

authentication_type_desc

nvarchar(60)

Description du type d'authentification.

Valeur

Description

NONE

Pas d'authentification

INSTANCE

Authentification d'instance

DATABASE

Authentification de la base de données

WINDOWS

Authentification Windows

Ne s'applique pas à SQL Azure.

default_language_name

sysname

Signifie la langue par défaut de ce principal.

Ne s'applique pas à SQL Azure.

default_language_lcid

int

Signifie le LCID par défaut de ce principal.

Ne s'applique pas à SQL Azure.

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 que CHECK_POLICY et CHECK_EXPIRATION sont tous les deux activés. Pour plus d'informations, consultez Stratégie de mot de passe.

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 : Affichage de toutes les autorisations des principaux de base de données

La requête suivante répertorie les autorisations explicitement accordées ou refusées 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;

B : Affichage 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 afficher les autorisations accordées ou refusées aux 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

Référence

Affichages catalogue (Transact-SQL)

Affichages catalogue liées à la sécurité (Transact-SQL)

Concepts

Principaux (moteur de base de données)