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

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 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 ALTERA QUALSIASI DATABASEEVENT SESSION DATABASE
AAMK ALTERARE QUALSIASI MASCHERA DATABASE
AEDS MODIFICA QUALSIASI EXTERNAL DATA SOURCE DATABASE
AEFF MODIFICA QUALSIASI EXTERNAL FILE FORMAT DATABASE
AL ALTER APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY, CONTRACTCERTIFICATE, , DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, , OGGETTO, REMOTE SERVICE BINDING, ROLE, ROUTESCHEMASERVICESYMMETRIC KEYUSERXML SCHEMA COLLECTION
ALAK MODIFICA QUALSIASI ASYMMETRIC KEY DATABASE
ALAR MODIFICA QUALSIASI APPLICATION ROLE DATABASE
ALAS MODIFICA QUALSIASI ASSEMBLY DATABASE
ALCF MODIFICA QUALSIASI CERTIFICATE DATABASE
ALDS MODIFICARE QUALSIASI SPAZIO DATI DATABASE
ALED ALTERA QUALSIASI DATABASEEVENT NOTIFICATION DATABASE
ALFT MODIFICA QUALSIASI FULLTEXT CATALOG DATABASE
ALMT MODIFICA QUALSIASI MESSAGE TYPE DATABASE
ALRL MODIFICA QUALSIASI ROLE DATABASE
ALRT MODIFICA QUALSIASI ROUTE DATABASE
ALSB MODIFICA QUALSIASI REMOTE SERVICE BINDING DATABASE
ALSC MODIFICA QUALSIASI CONTRACT DATABASE
ALSK MODIFICA QUALSIASI SYMMETRIC KEY DATABASE
ALSM MODIFICA QUALSIASI SCHEMA DATABASE
ALSV MODIFICA QUALSIASI SERVICE DATABASE
ALTG ALTERA QUALSIASI DATABASE DDL TRIGGER DATABASE
ALUS MODIFICA QUALSIASI USER DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOG DATABASE
CL CONTROL APPLICATION ROLE, ASSEMBLY, CERTIFICATEASYMMETRIC KEY, CONTRACT, , DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OGGETTO, REMOTE SERVICE BINDING, , SERVICEUSERROUTESCHEMASYMMETRIC KEYTYPEROLEXML SCHEMA COLLECTION
CO CONNECT DATABASE
CORP REPLICAZIONE DI CONNESSIONE 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 AMMINISTRARE DATABASE OPERAZIONI DI BLOCCO DATABASE
DL DELETE DATABASE, OBIETTIVO, SCHEMA
EAES Eseguire qualsiasi script esterno DATABASE
EX EXECUTE ASSEMBLY, DATABASE, OGGETTO, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT DATABASE, OBIETTIVO, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, , , , , , , OGGETTO, SCHEMA, SYMMETRIC KEY, TYPE, MESSAGE TYPEDATABASEFULLTEXT CATALOGCONTRACTCERTIFICATEASYMMETRIC KEYXML SCHEMA COLLECTION
SL SELECT DATABASE, OBIETTIVO, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN SOTTOSCRIVERE LE NOTIFICHE DELLE QUERY DATABASE
TO PRENDITI LA PROPRIETÀ ASSEMBLY, , , , , , , , OGGETTO, REMOTE SERVICE BINDING, ROLESERVICESCHEMASYMMETRIC KEYTYPEROUTEMESSAGE TYPEFULLTEXT CATALOGDATABASECONTRACTCERTIFICATEASYMMETRIC KEYXML SCHEMA COLLECTION
UP UPDATE DATABASE, OBIETTIVO, SCHEMA
VW VIEW DEFINIZIONE APPLICATION ROLE, ASSEMBLY, CERTIFICATEASYMMETRIC KEY, CONTRACT, , DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OGGETTO, REMOTE SERVICE BINDING, , SERVICEUSERROUTESCHEMASYMMETRIC KEYTYPEROLEXML SCHEMA COLLECTION
VWCK VIEW QUALSIASI COLUMN ENCRYPTION KEY DEFINIZIONE DATABASE
VWCM VIEW QUALSIASI COLUMN MASTER KEY DEFINIZIONE DATABASE
VWCT VIEW TRACCIAMENTO DELLE MODIFICHE TABLE, SCHEMA
VWDS VIEW DATABASE STATO DATABASE

REVOKE e permessi di eccezione a colonna

Nella maggior parte dei casi, il REVOKE comando rimuoverà l'inserimento GRANT o DENY da sys.database_permissions.

Tuttavia, è possibile GRANT o DENY permessi su un oggetto e poi REVOKE quel permesso su una colonna. Questo permesso di eccezione a colonna apparirà 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];

Questi permessi appariranno in sys.database_permissions come uno GRANT (sulla tabella) e uno REVOKE (sulla colonna).

Important

REVOKE è diverso da DENY, poiché il Sales principale può comunque avere accesso alla colonna tramite altri permessi. Se avessimo negato i permessi invece di revocarli, Sales non potremmo visualizzare il contenuto della colonna perché DENY sostituisce GRANTsempre .

Permissions

Qualsiasi utente può visualizzare le proprie autorizzazioni. Per vedere i permessi di altri utenti, è necessario VIEW DEFINIRE, MODIFICARE QUALSIASI USERo qualsiasi permesso su un utente. Per vedere ruoli definiti dall'utente, è necessario ALTERARE QUALSIASI ROLE, oppure l'appartenenza al ruolo (come 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
WHERE pe.class = 1;

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 pe.class = 1
    AND 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