sys.database_principals (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

Viene restituita una riga per ogni entità di sicurezza in un database di SQL Server.

Nome colonna Tipo di dati Descrizione
nome sysname Nome dell'entità, univoco all'interno del database.
principal_id int ID dell'entità, univoco all'interno del database.
type char(1) Tipo di entità:

A = Ruolo applicazione

C = Utente sul quale è stato eseguito il mapping a un certificato

E = Utente esterno da Azure Active Directory

G = Gruppo di Windows

K = Utente sul quale è stato eseguito il mapping a una chiave asimmetrica

R = Ruolo del database

S = Utente SQL

U = Utente di Windows

X = Gruppo esterno da Azure Active Directory gruppo o applicazioni
type_desc nvarchar(60) Descrizione del tipo dell'entità.

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 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. Tutti i ruoli predefiniti del database sono di proprietà di dbo per impostazione predefinita.
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 Si applica a: SQL Server 2012 (11.x) e versioni successive.

Indica il tipo di autenticazione. Di seguito sono riportati i valori possibili e le relative descrizioni.

0: nessuna autenticazione
1: Autenticazione dell'istanza
2: Autenticazione del database
3 : Windows autenticazione
4 : Azure Active Directory autenticazione
authentication_type_desc nvarchar(60) Si applica a: SQL Server 2012 (11.x) e versioni successive.

Descrizione del tipo di autenticazione. Di seguito sono riportati i valori possibili e le relative descrizioni.

NONE : nessuna autenticazione
INSTANCE : autenticazione dell'istanza
DATABASE : autenticazione del database
WINDOWS: Windows autenticazione
EXTERNAL: Azure Active Directory autenticazione
default_language_name sysname Si applica a: SQL Server 2012 (11.x) e versioni successive.

Indica la lingua predefinita per questa entità.
default_language_lcid int Si applica a: SQL Server 2012 (11.x) e versioni successive.

Indica l'identificatore LCID predefinito per questa entità.
allow_encrypted_value_modifications bit Si applica a: SQL Server 2016 (13.x) e versioni successive, Database SQL.

Elimina i controlli sui metadati di crittografia nel server nelle operazioni di copia bulk. In questo modo l'utente può eseguire la copia bulk dei dati crittografati Always Encrypted, tra tabelle o database, senza decrittografare i dati. Il valore predefinito è OFF.

Commenti

Le proprietà PasswordLastSetTime sono disponibili in tutte le configurazioni supportate di SQL Server, ma le altre proprietà sono disponibili solo quando SQL Server è in esecuzione in Windows Server 2003 o versioni successive e sono abilitate entrambe le CHECK_POLICY e CHECK_EXPIRATION. Per altre informazioni, vedere Criteri password. I valori dell'principal_id possono essere riutilizzati nel caso in cui le entità siano state eliminate e pertanto non è garantito un aumento costante.

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.

Esempio

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

Nella query seguente viene creato un join di 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;  

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

C: 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 vengono visualizzate 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;  

D: Elenco delle autorizzazioni per gli oggetti dello schema all'interno di un database

La query seguente unisce sys.database_principals e a e per sys.database_permissions sys.objects sys.schemas elencare le autorizzazioni concesse o negate a oggetti dello schema specifici.

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

Entità (motore di database)
sys.server_principals (Transact-SQL)
Viste del catalogo relative alla sicurezza (Transact-SQL)
Utenti del database indipendente - Rendere portabile il database
Connettersi al Database SQL utilizzando l’autenticazione di Azure Active Directory