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.

Valore

Descrizione

0

Nessuna autenticazione

1

Autenticazione istanza

2

Autenticazione database

3

Autenticazione di Windows

Non si applica ai trigger SQL Azure.

authentication_type_desc

nvarchar(60)

Descrizione del tipo di autenticazione.

Valore

Descrizione

NONE

Nessuna autenticazione

INSTANCE

Autenticazione istanza

DATABASE

Autenticazione database

WINDOWS

Autenticazione di Windows

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.

Nota importanteImportante

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)

Concetti

Entità (Motore di database)