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 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 autenticazioneINSTANCE : autenticazione dell'istanzaDATABASE : autenticazione del databaseWINDOWS : autenticazione di WindowsEXTERNAL : 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 relative alla sicurezza (Transact-SQL)
Utenti di database indipendente: rendere portabile un database
Connessione a SQL di Azure con l'autenticazione Microsoft Entra