Monitorare connessioni, sessioni e richieste usando DMV
Si applica a:✅ endpoint di Analisi SQL e Warehouse in Microsoft Fabric
È possibile usare viste a gestione dinamica esistenti (DMV) per monitorare lo stato di connessione, sessione e richiesta in Microsoft Fabric. Per altre informazioni sugli strumenti e sui metodi di esecuzione di query T-SQL, vedere Eseguire query sul warehouse.
Come monitorare connessioni, sessioni e richieste usando DMV del ciclo di vita delle query
Per la versione corrente sono disponibili tre viste a gestione dinamica (DMV) per ricevere informazioni dettagliate sul ciclo di vita delle query SQL in tempo reale.
- sys.dm_exec_connections
- Restituisce informazioni su ogni connessione stabilita tra il warehouse e il motore.
- sys.dm_exec_sessions
- Restituisce informazioni su ogni sessione autenticata tra l'elemento e il motore.
- sys.dm_exec_requests
- Restituisce informazioni su ogni richiesta attiva in una sessione.
Queste tre DMV forniscono informazioni dettagliate sugli scenari seguenti:
- Chi è l’utente che esegue la sessione?
- Quando è stata avviata la sessione dall'utente?
- Qual è l'ID della connessione al data warehouse e alla sessione che esegue la richiesta?
- Quante query vengono eseguite attivamente?
- Quali query sono a esecuzione prolungata?
Questa esercitazione illustra come monitorare le query SQL in esecuzione usando viste a gestione dinamica (DMV).
Query DMV di esempio
Nell'esempio seguente viene eseguita una query sys.dm_exec_sessions
per trovare tutte le sessioni attualmente in esecuzione.
SELECT *
FROM sys.dm_exec_sessions;
Trovare la relazione tra connessioni e sessioni
Nell'esempio seguente vengono aggiunti sys.dm_exec_connections
e sys.dm_exec_sessions
alla relazione tra la sessione attiva in una connessione specifica.
SELECT connections.connection_id,
connections.connect_time,
sessions.session_id, sessions.login_name, sessions.login_time, sessions.status
FROM sys.dm_exec_connections AS connections
INNER JOIN sys.dm_exec_sessions AS sessions
ON connections.session_id=sessions.session_id;
Identificare e TERMINARE una query a esecuzione prolungata
Questa prima query identifica l'elenco di query con esecuzione prolungata nell'ordine in cui la query ha richiesto il tempo più lungo dall'arrivo.
SELECT request_id, session_id, start_time, total_elapsed_time
FROM sys.dm_exec_requests
WHERE status = 'running'
ORDER BY total_elapsed_time DESC;
Questa seconda query mostra l'utente che ha eseguito la sessione con la query a esecuzione prolungata.
SELECT login_name
FROM sys.dm_exec_sessions
WHERE 'session_id' = 'SESSION_ID WITH LONG-RUNNING QUERY';
Questa terza query illustra come usare il comando TERMINARE in session_id
con la query a esecuzione prolungata.
KILL 'SESSION_ID WITH LONG-RUNNING QUERY'
Ad esempio:
KILL '101'
Autorizzazioni
- Un amministratore ha le autorizzazioni per eseguire tutte e tre le DMV (
sys.dm_exec_connections
,sys.dm_exec_sessions
,sys.dm_exec_requests
) per visualizzare le informazioni personali e altrui all'interno di un'area di lavoro. - Un membro, un collaboratore e un visualizzatore possono eseguire
sys.dm_exec_sessions
esys.dm_exec_requests
visualizzare i propri risultati all'interno del warehouse, ma non dispone dell'autorizzazione per eseguiresys.dm_exec_connections
. - Solo un amministratore dispone dell'autorizzazione per eseguire il comando
KILL
.