sys.database_principals (Transact-SQL)
Viene restituita una riga per ogni entità di sicurezza in un database.
Nome colonna |
Tipo di dati |
Descrizione |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
name |
sysname |
Nome dell'entità, univoco all'interno del database. |
||||||||||
principal_id |
int |
ID dell'entità, univoco all'interno del database. |
||||||||||
tipo |
char(1) |
Tipo di entità: S = Utente SQL U = Utente di Windows G = Gruppo di Windows A = Ruolo applicazione R = Ruolo del database C = Utente sul quale è stato eseguito il mapping a un certificato K = Utente sul quale è stato eseguito il mapping a una chiave asimmetrica |
||||||||||
type_desc |
nvarchar(60) |
Descrizione del tipo dell'entità. SQL_USER WINDOWS_USER WINDOWS_GROUP APPLICATION_ROLE DATABASE_ROLE CERTIFICATE_MAPPED_USER ASYMMETRIC_KEY_MAPPED_USER |
||||||||||
default_schema_name |
sysname |
Nome da utilizzare quando il nome SQL non specifica uno schema. Restituisce Null per entità non di tipo S, U o A. |
||||||||||
create_date |
datetime |
Ora di creazione dell'entità. |
||||||||||
modify_date |
datetime |
Ora dell'ultima modifica dell'entità. |
||||||||||
owning_principal_id |
int |
ID dell'entità proprietaria dell'entità corrente. Tutte le entità, esclusi i ruoli del database, devono essere di proprietà di dbo. |
||||||||||
sid |
varbinary(85) |
ID di sicurezza (SID) dell'entità. NULL per SYS e INFORMATION SCHEMAS |
||||||||||
is_fixed_role |
bit |
Se è 1, questa riga rappresenta una voce per uno dei ruoli predefiniti del database, ovvero db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter. |
||||||||||
authentication_type |
int |
Indica il tipo di autenticazione.
Non si applica ai trigger SQL Azure. |
||||||||||
authentication_type_desc |
nvarchar(60) |
Descrizione del tipo di autenticazione.
Non si applica ai trigger SQL Azure. |
||||||||||
default_language_name |
sysname |
Indica la lingua predefinita per questa entità. Non si applica ai trigger SQL Azure. |
||||||||||
default_language_lcid |
int |
Indica l'identificatore LCID predefinito per questa entità. Non si applica ai trigger SQL Azure. |
Osservazioni
Le proprietà PasswordLastSetTime sono disponibili in tutte le configurazioni supportate di SQL Server, mentre le altre proprietà sono disponibili solo se SQL Server è in esecuzione in Windows Server 2003 e se sono abilitate entrambe le opzioni CHECK_POLICY e CHECK_EXPIRATION. Per ulteriori informazioni, vedere Criteri password.
Autorizzazioni
Qualsiasi utente può visualizzare il proprio nome utente, gli utenti di sistema e i ruoli predefiniti del database. Per visualizzare altri utenti, è richiesta l'autorizzazione ALTER ANY USER o un'autorizzazione dell'utente. Per visualizzare i ruoli definiti dall'utente, è richiesta l'autorizzazione ALTER ANY ROLE o l'appartenenza al ruolo.
Esempi
A: elenco di tutte le autorizzazioni delle entità di database
Nella query seguente vengono elencate le autorizzazioni concesse o negate in modo esplicito alle entità di database.
Importante |
---|
Le autorizzazioni dei ruoli predefiniti del database non sono incluse in sys.database_permissions. Pertanto, le entità di database potrebbero contenere ulteriori autorizzazioni non presenti in questo elenco. |
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: elenco di autorizzazioni per gli oggetti dello schema all'interno di un database
La query seguente unisce in join sys.database_principals e sys.database_permissions con sys.objects e sys.schemas per elencare le autorizzazioni concesse o negate agli oggetti di uno schema specifico.
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;
Vedere anche
Riferimento
Viste del catalogo (Transact-SQL)
Viste del catalogo relative alla sicurezza (Transact-SQL)