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.
Ne s'applique pas à SQL Azure. |
||||||||||
authentication_type_desc |
nvarchar(60) |
Description du type d'authentification.
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)