Condividi tramite


sys.database_permissions (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di analisi (PDW)Endpoint di analisi SQL in Microsoft FabricMagazzino in Microsoft FabricDatabase SQL 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 .

Important

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

Nome della colonna Tipo di dati Description
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

TYPE

XML_SCHEMA_COLLECTION

MESSAGE_TYPE

SERVICE_CONTRACT

SERVICE

REMOTE_SERVICE_BINDING

ROUTE

FULLTEXT_CATALOG

SYMMETRIC_KEYS

CERTIFICATE

ASYMMETRIC_KEY

Lista di Parole Escluse per il Testo Completo

ELENCO RICERCA IMMOBILI

CREDENZIALE CON AMBITO SPECIFICO DEL DATABASE

LINGUAGGIO ESTERNO
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 del permesso.
state char(1) Dichiarazione del permesso:

D = Nega

R = Revoca

G = Grant

W = Concessione con opzione di concessione
state_desc nvarchar(60) Descrizione dello stato dell'autorizzazione:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Autorizzazioni database

Sono possibili i tipi di autorizzazioni seguenti.

Tipo di autorizzazione Nome autorizzazione Entità a protezione diretta a cui si applica
AADS ALTERARE QUALSIASI SESSIONE DI EVENTO DEL DATABASE DATABASE
AAMK ALTERARE QUALSIASI MASCHERA DATABASE
AEDS ALTERA QUALSIASI FONTE DATI ESTERNA DATABASE
AEFF MODIFICARE QUALSIASI FORMATO DI FILE ESTERNO DATABASE
AL ALTER RUOLO APPLICAZIONE, ASSEMBLY, CHIAVE ASIMMETRICA, CERTIFICATO, CONTRATTO, DATABASE, CATALOGO FULLTEXT, TIPO DI MESSAGGIO, OGGETTO, ASSOCIAZIONE DI SERVIZI REMOTI, RUOLO, ROUTE, SCHEMA, SERVIZIO, CHIAVE SIMMETRICA, UTENTE, RACCOLTA XML SCHEMA
ALAK ALTERA QUALSIASI CHIAVE ASIMMETRICA DATABASE
ALAR MODIFICA QUALSIASI RUOLO DELL'APPLICAZIONE DATABASE
ALAS ALTERA QUALSIASI ASSEMBLY DATABASE
ALCF MODIFICA QUALSIASI CERTIFICATO DATABASE
ALDS MODIFICARE QUALSIASI SPAZIO DATI DATABASE
ALED ALTER QUALSIASI NOTIFICA DI EVENTO DEL DATABASE DATABASE
ALFT ALTER QUALSIASI CATALOGO FULLTEXT DATABASE
ALMT MODIFICARE QUALSIASI TIPO DI MESSAGGIO DATABASE
ALRL MODIFICA QUALSIASI RUOLO DATABASE
ALRT ALTERA QUALSIASI ROTTA DATABASE
ALSB MODIFICA QUALSIASI ASSOCIAZIONE DI SERVIZIO REMOTO DATABASE
ALSC MODIFICA QUALSIASI CONTRATTO DATABASE
ALSK ALTERARE QUALSIASI CHIAVE SIMMETRICA DATABASE
ALSM ALTERARE QUALSIASI SCHEMA DATABASE
ALSV MODIFICARE QUALSIASI SERVIZIO DATABASE
ALTG ALTERA QUALSIASI TRIGGER DDL DEL DATABASE DATABASE
ALUS ALTERARE QUALSIASI UTENTE DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE (Esegui il backup del database) DATABASE
BALO REGISTRO DI BACKUP DATABASE
CL CONTROL RUOLO APPLICAZIONE, ASSEMBLY, CHIAVE ASIMMETRICA, CERTIFICATO, CONTRATTO, DATABASE, CATALOGO FULLTEXT, TIPO DI MESSAGGIO, OGGETTO, ASSOCIAZIONE DI SERVIZI REMOTI, RUOLO, ROUTE, SCHEMA, SERVIZIO, CHIAVE SIMMETRICA, TIPO, UTENTE, RACCOLTA XML SCHEMA
CO CONNECT DATABASE
CORP REPLICAZIONE DI CONNESSIONE DATABASE
CP CHECKPOINT DATABASE
CRAG CREARE AGGREGATO DATABASE
CRAK CREA CHIAVE ASIMMETRICA DATABASE
CRAS CREA ASSEMBLY DATABASE
CRCF CREA CERTIFICATO DATABASE
CRDB CREA DATABASE DATABASE
CRDF CREA PREDEFINITO DATABASE
CRED NOTIFICA EVENTO DDL DEL DATABASE DATABASE
CRFN CREA FUNZIONE DATABASE
CRFT CREA CATALOGO FULLTEXT DATABASE
CRMT CREA TIPO DI MESSAGGIO DATABASE
CRPR CREA PROCEDURA DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREARE RUOLO DATABASE
CRRT Crea percorso DATABASE
CRRU CREA REGOLA DATABASE
CRSB CREA ASSOCIAZIONE DI SERVIZIO REMOTO DATABASE
CRSC CREA CONTRATTO DATABASE
CRSK CREARE CHIAVE SIMMETRICA DATABASE
CRSM CREATE SCHEMA DATABASE
CRSN CREA SINONIMO DATABASE
CRSO Si applica a: SQL Server 2012 (11.x) e versioni successive.

CREA SEQUENZA
DATABASE
CRSV CREA SERVIZIO DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREA TIPO (CREATE TYPE) DATABASE
CRVW CREA VISTA DATABASE
CRXS Si applica a: SQL Server 2008 (10.0.x) e versioni successive.

CREA XML SCHEMA COLLECTION
DATABASE
DABO AMMINISTRA LE OPERAZIONI DI MASSA DEL DATABASE DATABASE
DL DELETE DATABASE, OGGETTO, SCHEMA
EAES Eseguire qualsiasi script esterno DATABASE
EX EXECUTE ASSEMBLY, DATABASE, OGGETTO, SCHEMA, TIPO, COLLEZIONE SCHEMA XML
IM IMPERSONATE USER
IN INSERT DATABASE, OGGETTO, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, CHIAVE ASIMMETRICA, CERTIFICATO, CONTRATTO, DATABASE, CATALOGO FULLTEXT, TIPO DI MESSAGGIO, OGGETTO, SCHEMA, CHIAVE SIMMETRICA, TIPO, COLLEZIONE DI SCHEMA XML
SL SELECT DATABASE, OGGETTO, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN SOTTOSCRIVERE LE NOTIFICHE DELLE QUERY DATABASE
TO PRENDITI LA PROPRIETÀ ASSEMBLY, CHIAVE ASIMMETRICA, CERTIFICATO, CONTRATTO, DATABASE, CATALOGO FULLTEXT, TIPO DI MESSAGGIO, OGGETTO, BINDING REMOTO DI SERVIZIO, RUOLO, ROUTE, SCHEMA, SERVIZIO, CHIAVE SIMMETRICA, TIPO, COLLEZIONE DI SCHEMA XML
UP UPDATE DATABASE, OGGETTO, SCHEMA
VW DEFINIZIONE VISUALIZZA RUOLO APPLICAZIONE, ASSEMBLY, CHIAVE ASIMMETRICA, CERTIFICATO, CONTRATTO, DATABASE, CATALOGO FULLTEXT, TIPO DI MESSAGGIO, OGGETTO, ASSOCIAZIONE DI SERVIZI REMOTI, RUOLO, ROUTE, SCHEMA, SERVIZIO, CHIAVE SIMMETRICA, TIPO, UTENTE, RACCOLTA XML SCHEMA
VWCK VISUALIZZARE QUALSIASI DEFINIZIONE DELLA CHIAVE DI CRITTOGRAFIA DELLA COLONNA DATABASE
VWCM VISUALIZZARE LA DEFINIZIONE DELLA CHIAVE MASTER DI QUALSIASI COLONNA DATABASE
VWCT VISUALIZZARE IL RILEVAMENTO MODIFICHE TABELLA, SCHEMA
VWDS VISUALIZZARE LO STATO DEL DATABASE DATABASE

REVOKE e autorizzazioni per le eccezioni di colonna

Nella maggior parte dei casi, il comando REVOKE rimuoverà la voce GRANT o DENY da sys.database_permissions.

Tuttavia, è possibile concedere o negare le autorizzazioni per un oggetto e quindi REVOCARE tale autorizzazione per una colonna. Questa autorizzazione di eccezione di colonna verrà visualizzata come REVOKE in sys.database_permissions. Si consideri l'esempio seguente:

GRANT SELECT ON Person.Person TO [Sales];

REVOKE SELECT ON Person.Person(AdditionalContactInfo) FROM [Sales];

Queste autorizzazioni verranno visualizzate in sys.database_permissions come una GRANT (nella tabella) e una REVOKE (nella colonna).

Important

REVOKE è diverso da DENY, perché l'entità di Sales può comunque avere accesso alla colonna tramite altre autorizzazioni. Se le autorizzazioni sono stati negate anziché revocarle, Sales non sarebbe in grado di visualizzare il contenuto della colonna perché DENY sostituisce sempre GRANT.

Permissions

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 l'utente è proprietario o per le quali dispone di autorizzazioni. Per altre informazioni, vedere Metadata Visibility Configuration.

Examples

A. 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.

Important

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.objectssys.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 del database nel databaseAdventureWorksDW2025di 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

Vedere anche

Passaggi successivi