sys.database_permissions (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)Endpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft Fabric

Restituisce una riga per ogni autorizzazione o per ogni autorizzazione per le eccezioni di colonna nel database. Per le colonne, esiste una riga per ogni autorizzazione che è diversa dall'autorizzazione corrispondente a livello di oggetto. Se l'autorizzazione per la colonna è uguale all'autorizzazione dell'oggetto corrispondente, non è presente alcuna riga e l'autorizzazione applicata è quella dell'oggetto .

Importante

Le autorizzazioni a livello di colonna hanno la precedenza sulle autorizzazioni a livello di oggetto per la stessa entità.

Nome colonna Tipo di dati Descrizione
class tinyint Identifica la classe per la quale esiste l'autorizzazione. Per altre informazioni, vedere sys.securable_classes (Transact-SQL).

0 = Database
1 = Oggetto o colonna
3 = Schema
4 = Entità di database
5 = Assembly - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
6 = Tipo
10 = Raccolta di XML Schema -
Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
15 = Tipo di messaggio - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
16 = Contratto di servizio - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
17 = Servizio - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
18 = Associazione al servizio remoto - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
19 = Route - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
23 =Catalogo full-text - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
24 = Chiave simmetrica - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
25 = Certificato - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
26 = Chiave asimmetrica - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
29 = Elenco di parole non significative full-text - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
31 = Elenco proprietà di ricerca - Si applica a: SQL Server 2008 (10.0.x) e versioni successive.
32 = Credenziali con ambito database - Si applica a: SQL Server 2016 (13.x) e versioni successive.
34 = Linguaggio esterno - Si applica a: SQL Server 2019 (15.x) e versioni successive.
class_desc nvarchar(60) Descrizione della classe per cui esiste l'autorizzazione.

DATABASE

OBJECT_OR_COLUMN

SCHEMA

DATABASE_PRINCIPAL

ASSEMBLY

TIPO

XML_SCHEMA_COLLECTION

MESSAGE_TYPE

SERVICE_CONTRACT

SERVICE

REMOTE_SERVICE_BINDING

ROUTE

FULLTEXT_CATALOG

SYMMETRIC_KEYS

CERTIFICATE

ASYMMETRIC_KEY

FULLTEXT STOPLIST

SEARCH PROPERTY LIST

DATABASE SCOPED CREDENTIAL

EXTERNAL LANGUAGE
major_id int ID dell'elemento per cui esiste l'autorizzazione, interpretato in base alla classe di appartenenza. In genere, il major_id tipo di ID che si applica a ciò che la classe rappresenta.

0 = Database stesso

>0 = ID oggetto per gli oggetti utente

<0 = ID oggetto per gli oggetti di sistema
minor_id int ID secondario dell'elemento per cui esiste l'autorizzazione, interpretato in base alla classe di appartenenza. Spesso, è minor_id zero, perché non è disponibile alcuna sottocategoria per la classe dell'oggetto . In caso contrario, è l'ID colonna di una tabella.
grantee_principal_id int ID dell'entità di database alla quale vengono concesse le autorizzazioni.
grantor_principal_id int ID dell'entità di database dell'utente che concede queste autorizzazioni.
type char(4) Tipo di autorizzazione per il database Per un elenco dei tipi di autorizzazioni, vedere la tabella seguente.
permission_name nvarchar(128) Nome dell'autorizzazione.
state char(1) Stato dell'autorizzazione:

D = Deny

R = Revoke

G = Grant

W = Grant With Grant Option
state_desc nvarchar(60) Descrizione dello stato dell'autorizzazione:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Autorizzazioni per il database

Sono possibili i tipi di autorizzazioni seguenti.

Tipo di autorizzazione Nome autorizzazione Entità a protezione diretta a cui si applica
AADS ALTER ANY DATABASE EVENT SESSION DATABASE
AAMK ALTER ANY MASK DATABASE
AEDS ALTER ANY EXTERNAL DATA SOURCE DATABASE
AEFF ALTER ANY EXTERNAL FILE FORMAT DATABASE
AL ALTER APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, USER, XML SCHEMA COLLECTION
ALAK ALTER ANY ASYMMETRIC KEY DATABASE
ALAR ALTER ANY APPLICATION ROLE DATABASE
ALAS ALTER ANY ASSEMBLY DATABASE
ALCF ALTER ANY CERTIFICATE DATABASE
ALDS ALTER ANY DATASPACE DATABASE
ALED ALTER ANY DATABASE EVENT NOTIFICATION DATABASE
ALFT ALTER ANY FULLTEXT CATALOG DATABASE
ALMT ALTER ANY MESSAGE TYPE DATABASE
ALRL ALTER ANY ROLE DATABASE
ALRT ALTER ANY ROUTE DATABASE
ALSB ALTER ANY REMOTE SERVICE BINDING DATABASE
ALSC ALTER ANY CONTRACT DATABASE
ALSK ALTER ANY SYMMETRIC KEY DATABASE
ALSM ALTER ANY SCHEMA DATABASE
ALSV ALTER ANY SERVICE DATABASE
ALTG ALTER ANY DATABASE DDL TRIGGER DATABASE
ALUS ALTER ANY USER DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOG DATABASE
CL CONTROL APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION
CO CONNECT DATABASE
CORP CONNECT REPLICATION DATABASE
CP CHECKPOINT DATABASE
CRAG CREATE AGGREGATE DATABASE
CRAK CREATE ASYMMETRIC KEY DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB CREATE DATABASE DATABASE
CRDF CREATE DEFAULT DATABASE
CRED CREATE DATABASE DDL EVENT NOTIFICATION DATABASE
CRFN CREATE FUNCTION DATABASE
CRFT CREATE FULLTEXT CATALOG DATABASE
CRMT CREATE MESSAGE TYPE DATABASE
CRPR CREATE PROCEDURE DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREATE ROLE DATABASE
CRRT CREATE ROUTE DATABASE
CRRU CREATE RULE DATABASE
CRSB CREATE REMOTE SERVICE BINDING DATABASE
CRSC CREATE CONTRACT DATABASE
CRSK CREATE SYMMETRIC KEY DATABASE
CRSM CREATE SCHEMA DATABASE
CRSN CREATE SYNONYM DATABASE
CRSO Si applica a: SQL Server 2012 (11.x) e versioni successive.

CREATE SEQUENCE
DATABASE
CRSV CREATE SERVICE DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREATE TYPE DATABASE
CRVW CREATE VIEW DATABASE
CRXS Si applica a: SQL Server 2008 (10.0.x) e versioni successive.

CREATE XML SCHEMA COLLECTION
DATABASE
DABO ADMINISTER DATABASE BULK OPERATIONS DATABASE
DL CANC DATABASE, OBJECT, SCHEMA
EAES EXECUTE ANY EXTERNAL SCRIPT DATABASE
EX EXECUTE ASSEMBLY, DATABASE, OBJECT, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT DATABASE, OBJECT, SCHEMA
Gestione ruolo AREARICEV OBJECT
RF REFERENCES ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, SCHEMA, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
SL SELECT DATABASE, OBJECT, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN SUBSCRIBE QUERY NOTIFICATIONS DATABASE
TO TAKE OWNERSHIP ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
UP UPDATE DATABASE, OBJECT, SCHEMA
VW VIEW DEFINITION APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, USER, XML SCHEMA COLLECTION
VWCK VIEW ANY COLUMN ENCRYPTION KEY DEFINITION DATABASE
VWCM VIEW ANY COLUMN MASTER KEY DEFINITION DATABASE
VWCT VIEW CHANGE TRACKING TABLE, SCHEMA
VWDS VIEW DATABASE STATE DATABASE

Autorizzazioni

Qualsiasi utente può visualizzare le proprie autorizzazioni. Per visualizzare le autorizzazioni di altri utenti, è richiesta VIEW DEFINITION, ALTER ANY USER o qualsiasi autorizzazione per un utente. Per visualizzare i ruoli definiti dall'utente, è richiesta l'autorizzazione ALTER ANY ROLE o l'appartenenza al ruolo (ad esempio pubblico).

La visibilità dei metadati nelle viste del catalogo è limitata alle entità a protezione diretta di cui un utente è proprietario o a cui l'utente ha concesso alcune autorizzazioni. Per altre informazioni, vedere Metadata Visibility Configuration.

Esempi

R. 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  
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id;  

B. Elencare le autorizzazioni per gli oggetti schema all'interno di un database

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

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
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id;

C. Elencare le autorizzazioni per un oggetto specifico

È possibile usare l'esempio precedente per eseguire query sulle autorizzazioni specifiche di un singolo oggetto di database.

Si considerino ad esempio le autorizzazioni granulari seguenti concesse a un utente test di database nel databaseAdventureWorksDW2022 di esempio:

GRANT SELECT ON dbo.vAssocSeqOrders TO [test];

Trovare le autorizzazioni granulari assegnate a dbo.vAssocSeqOrders:

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
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE o.name = 'vAssocSeqOrders'
    AND s.name = 'dbo';

Restituisce l'output:

principal_id    name    type_desc    authentication_type_desc    state_desc    permission_name    ObjectName
5    test    SQL_USER    INSTANCE    GRANT    SELECT    dbo.vAssocSeqOrders

Vedi anche

Passaggi successivi