Condividi tramite


sys.database_principals (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL di Azure Synapse Analytics Platform System (PDW) in Microsoft Fabric Warehouse nel database SQL di Microsoft Fabric in Microsoft Fabric

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

Nota

Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).

Descrizioni delle colonne

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.
type char(1) Tipo di entità:

A = Ruolo applicazione

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

E = Utente esterno da Microsoft Entra ID

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 applicazioni o gruppi Microsoft Entra
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 : autenticazione di Windows
4 : Autenticazione di Microsoft Entra
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: autenticazione di Windows
EXTERNAL: autenticazione di Microsoft Entra
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. Ciò consente all'utente di copiare in blocco i dati crittografati usando Always Encrypted, tra tabelle o database, senza decrittografare i dati. Il valore predefinito è OFF.

Osservazioni:

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 versione successiva e sia CHECK_POLICY che CHECK_EXPIRATION sono abilitati. Per altre informazioni, vedere Criteri password. I valori del 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.

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

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: Elencare 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: Elencare le autorizzazioni per gli oggetti schema all'interno di un database

I join sys.database_principals di query seguenti e sys.database_permissions a e sys.schemas per sys.objects 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;  

Vedi anche

Entità di sicurezza (Motore di database)
sys.server_principals (Transact-SQL)
Viste del catalogo della sicurezza (Transact-SQL)
Utenti di database indipendente: rendere portabile un database
Connessione a SQL di Azure con l'autenticazione Microsoft Entra