sys.database_principals (Transact-SQL)
Si applica a: SQL Server (tutte le versioni supportate)
database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
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 autenticazioneINSTANCE : autenticazione dell'istanzaDATABASE : autenticazione del databaseWINDOWS : Windows autenticazioneEXTERNAL : 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