Viste a gestione dinamica di sistema

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

Le viste a gestione dinamica (DMV) e le funzioni a gestione dinamica restituiscono informazioni sullo stato del server che possono essere usate per monitorare l'integrità di un'istanza del server, diagnosticare i problemi e ottimizzare le prestazioni.

Importante

Le funzioni e le viste a gestione dinamica restituiscono dati interni, specifici dell'implementazione, relativi allo stato. Gli schemi e i dati restituiti potrebbero cambiare nelle versioni future di SQL Server. Pertanto, le viste e le funzioni a gestione dinamica nelle versioni future potrebbero non essere compatibili con le viste e le funzioni a gestione dinamica in questa versione. Ad esempio, nelle versioni future di SQL Server, Microsoft potrebbe aumentare la definizione di qualsiasi visualizzazione a gestione dinamica aggiungendo colonne alla fine dell'elenco di colonne. Non è consigliabile utilizzare la sintassi SELECT * FROM dynamic_management_view_name nel codice di produzione. Il numero di colonne restituite potrebbe infatti cambiare compromettendo il corretto funzionamento dell'applicazione.

Esistono due tipi di funzioni e viste a gestione dinamica:

  • Funzioni e viste a gestione dinamica con ambito server. Richiedono l'autorizzazione VIEW SERVER STATE nel server. Per SQL Server 2022 e versioni successive, è necessario VISUALIZZARE LO STATO DELLE PRESTAZIONI DEL SERVER o VIEW SERVER SECURITY STATE è necessario per alcune DMV correlate alla sicurezza.

  • Funzioni e viste a gestione dinamica con ambito database. Richiedono l'autorizzazione VIEW DATABASE STATE nel database. Per SQL Server 2022 e versioni successive, è necessario VISUALIZZARE LO STATO DELLE PRESTAZIONI DEL DATABASE o VIEW DATABASE SECURITY STATE è necessario per alcune DMV correlate alla sicurezza.

Eseguire query su DMV

È possibile fare riferimento alle viste a gestione dinamica nelle istruzioni Transact-SQL usando nomi in due parti, in tre parti o in quattro parti. È possibile fare riferimento alle funzioni di gestione dinamica nelle istruzioni Transact-SQL usando nomi in due parti o in tre parti. Non è possibile fare riferimento a viste e funzioni a gestione dinamica nelle istruzioni Transact-SQL usando nomi in una sola parte.

Tutte le funzioni e le viste a gestione dinamica esistono nello schema sys e seguono questa convenzione di denominazione dm_*. Quando si utilizza una funzione o vista a gestione dinamica, è necessario anteporre al nome della funzione o vista il prefisso di schema sys. Ad esempio, per eseguire una query sulla vista a gestione dinamica dm_os_wait_stats, eseguire la query seguente:

SELECT wait_type,
       wait_time_ms
FROM sys.dm_os_wait_stats;

Autorizzazioni necessarie

Per eseguire query su una vista o una funzione a gestione dinamica, è necessaria SELECT l'autorizzazione per l'oggetto e VIEW SERVER STATE o VIEW DATABASE STATE l'autorizzazione. Ciò consente di restringere in maniera selettiva l'accesso di un utente o di un account a funzioni e viste a gestione dinamica. A tale scopo, creare prima l'utente in master e quindi negare l'autorizzazione utente SELECT per le viste a gestione dinamica o le funzioni a cui non si vuole accedere. In seguito, l'utente non può selezionare da queste funzioni o viste a gestione dinamica, indipendentemente dal contesto del database dell'utente.

Nota

Poiché DENY ha la precedenza, se a un utente sono state concesse autorizzazioni VIEW SERVER STATE ma negate VIEW DATABASE STATE , l'utente può visualizzare informazioni a livello di server, ma non informazioni a livello di database.