SQL Server Activity Monitor è un sistema di monitoraggio per visualizzare informazioni sui processi correnti di SQL Server e sul modo in cui questi processi influiscono sull’istanza corrente di SQL Server. Un monitoraggio efficiente fornisce informazioni sufficienti per diagnosticare e risolvere problemi, blocchi e colli di bottiglia.
Sommario
SQL Server Activity Monitor
SQL Server Activity Monitor è costituito da diversi riquadri: Panoramica, Processi, Attese risorse, I/O file di dati e Query costose recenti. I riquadri possono essere espansi e compressi. Le attività vengono sottoposte a query solo quando il riquadro specifico viene espanso.
Active Monitor esegue query sull’istanza monitorata per ottenere informazioni per i riquadri di visualizzazione di Monitoraggio attività. Quando l’intervallo di aggiornamento è impostato su meno di 10 secondi, il tempo utilizzato per eseguire queste query può influire sulle prestazioni del server
Sql Server Active Monitor: Requisiti per l’utilizzo
L’autorizzazione necessaria per visualizzare Monitoraggio attività è VIEW SERVER STATE
Per visualizzare il riquadro I/O file di dati, oltre a VIEW SERVER STATE, all’account di accesso devono essere concesse le autorizzazioni CREATE DATABASE, ALTER ANY DATABASE o VIEW ANY DEFINITION
Per terminare un processo, è necessario essere membri del ruolo sysadmin
Come avviare Sql Server Active Monitor
Esistono diversi modi per avviare l’Active Monitor: nella barra degli strumenti di SQL Server Management Studio fare clic sull’icona di Monitoraggio attività, usare la scelta rapida da tastiera Ctrl+ Alt+ A o in Esplora oggetti fare clic con il pulsante destro del mouse sull’istanza di SQL Server e selezionare Monitoraggio attività
Un’altra opzione consiste nell’impostare Monitoraggio attività da aprire all’avvio di SQL Server Management StudioOne more option is to set Activity Monitor to be opened when SQL Server Management Studio is started
- Nel menu sql Server Management StudioSQL Server Management Studio fare clic su Strumenti e quindi su Opzioni
- Aprire l’Ambiente Scheda Avvio
- Selezionare l’opzione Apri Esplora oggetti e Monitoraggio attività
Sql Server Activity Monitor è una funzionalità di SQL Server Management Studio che tiene traccia di alcune delle metriche più importanti che influiscono sulle prestazioni. Mostra le metriche in tempo reale, senza la soluzione out-of-the-box per salvarle per analisi successive.
In Sql Server Activity Monitor filtrare in base a un database/parametro specifico è facile, ma non è possibile escludere un valore specifico. Anche il monitoraggio di metriche aggiuntive non è possibile. Grazie al suo set limitato di funzionalità e metriche monitorate, non è consigliabile per un monitoraggio approfondito delle prestazioni.
Active Monitor: Overview
Il riquadro Overview contiene i grafici per le informazioni più importanti sull’istanza di SQL Server.
- % Tempo processore – è la percentuale di tempo impiegato dai processori per eseguire thread che non sono inattivi
- Attività in attesa: indica il numero di attività in attesa del rilascio di processore, I/O o memoria in modo che le attività possano essere elaborate
- I/O del database – è la velocità di trasferimento dati in MB/s dalla memoria al disco, dal disco alla memoria o dal disco al disco su disco
- Richieste batch/sec: indica il numero di batch di SQL Server ricevuti dall’istanza in un secondo

Riquadro Processi
Il riquadro Processi mostra le informazioni sui processi attualmente in esecuzione nei database SQL, su chi li esegue e da quale applicazione
Una descrizione comando per ogni intestazione di tabella mostra una breve descrizione dei dati di colonna e delle visualizzazioni di sistema utilizzate per ottenerla. Ogni colonna può essere filtrata utilizzando i filtri nell’intestazione di colonna
Il menu di scelta rapida per il processo specifico fornisce opzioni per visualizzare l’ultimo batch di comandi T-SQL per il processo, interromperlo o tracciarlo in SQL Server Profiler

ID sessione: è un valore univoco assegnato dal Motore di database (Database Engine) a ogni connessione utente. Questo è il valore spid restituito dalla procedura sp_who
Processo utente – 1 per i processi utente, 0 per i processi di sistema. Il filtro predefinito è impostato su 1, quindi vengono visualizzati solo i processi utente
Account di accesso: l’account di accesso di SQL Server che esegue la sessione
Database: il nome del database in cui è in esecuzione il processo
Stato attività: lo stato dell’attività, vuoto per le attività nello stato runnable e sospensione. Il valore può essere ottenuto anche utilizzando la vista sys.dm_os_tasks, come colonna task_state. Gli stati restituiti possono essere: “PENDING:Waiting for a worker thread. RUNNABLE: ma in attesa di ricevere un quantum. RUNNING: Attualmente in esecuzione sull’utilità di pianificazione. SUSPENDED: sospeso, ma è in attesa di un evento. FATTO: Completato. SPINLOOP: Bloccato in uno spinlock.”
Comando – il tipo di comando corrente. Il valore può essere ottenuto anche utilizzando la vista sys.dm_exec_requests, come colonna di comando
Applicazione: nome dell’applicazione che ha creato la connessione
Tempo di attesa (ms): per quanto tempo in millisecondi l’attività è in attesa di una risorsa. Il valore può essere ottenuto anche utilizzando la vista sys.dm_os_waiting_tasks, come colonna wait_duration_ms
Tipo di attesa: l’ultimo/tipo di attesa corrente. Il valore può essere ottenuto anche utilizzando la vista sys.dm_os_waiting_tasks, come colonna wait_type. Le attese possono essere di risorse, code ed attese esterne
Risorsa di attesa: la risorsa in attesa della connessione. Il valore può essere ottenuto anche utilizzando la vista sys.dm_os_waiting_tasks, come resource_description colonna
Bloccato da: ID della sessione che blocca l’attività. Il valore può essere ottenuto anche utilizzando la vista sys.dm_os_waiting_tasks, come la colonna blocking_session_id
Head Blocker – la sessione che causa la prima condizione di blocco in una catena di blocco
Memory Use (KB) – la memoria utilizzata dall’attività. Il valore può essere ottenuto anche utilizzando la vista sys.dm_exec_sessions, come la colonna memory_usage
Nome host: il nome del computer in cui viene effettuata la connessione corrente. Il valore può essere ottenuto anche utilizzando la vista sys.dm_exec_sessions, come la colonna host_name
Gruppo di carico di lavoro: nome del gruppo del carico di lavoro di Resource Governor[3]. Il valore può essere ottenuto anche utilizzando la vista sys.dm_resource_governor_workload_groups, come colonna name
Riquadro Attesa Risorse
In Sql Server Activity Monitor il riquadro Attesa Risorse mostra il tempo di Wait risorse per ogni attività.

Categoria di attesa: vengono create le categorie che combinano tipi di attesa strettamente correlati. I tipi di attesa vengono visualizzati nella colonna Tipo di attesa del riquadro Processi
Tempo di attesa (ms/sec): il tempo in cui tutte le attività in attesa sono in attesa di una o più risorse
Tempo di attesa recente (ms/sec): il tempo medio in cui tutte le attività in attesa sono in attesa di una o più risorse
Media numero di camerieri: viene calcolato per un tipico punto nel tempo nell’ultimo intervallo di campionamento e rappresenta il numero di attività in attesa di una o più risorse
Tempo di attesa cumulativo (sec): il tempo totale di attesa delle attività di attesa per una o più risorse dall’ultimo riavvio di SQL Server o l’ultima esecuzione di DBCC SQLPERF
Riquadro I/O Data File
Visualizza informazioni sui file di database nell’istanza di SQL Server. Per ogni database sono elencati tutti i file di database: MDF, LDF e NDF, i relativi percorsi e nomi

Lettura MB/sec: mostra l’attività di lettura recente per il file di database
Scrittura MB/sec : mostra l’attività di scrittura recente per il file di database
Tempo di risposta (ms) – tempo di risposta medio per l’attività di lettura e scrittura recente
Riquadro Query costose recenti
In Sql Server Active Monitor le query costose sono le query che utilizzano molte risorse: memoria, disco, rete. Il riquadro mostra le query costose eseguite negli ultimi 30 secondi. Le informazioni vengono ottenute dalle viste sys.dm_exec_requests e sys.dm_exec_query_stats . Un doppio clic sulla query apre l’istruzione monitorata.
Il menu di scelta rapida per la query specifica fornisce opzioni per aprire la query nell’editor di query e visualizzare il piano di esecuzione

Query: l’istruzione di query SQL monitorata
Executions/min – il numero di esecuzioni al minuto, dall’ultima ricompilazione. Il valore può essere ottenuto anche utilizzando la vista sys.dm_exec_query_stats, come la colonna execution_count
CPU (ms/sec): la frequenza della CPU utilizzata dall’ultima ricompilazione. Il valore può essere ottenuto anche utilizzando la vista sys.dm_exec_query_stats, come la colonna total_worker_time
Letture fisiche/sec, Scritture logiche/sec: frequenza di letture fisiche/scritture/scritture logiche al secondo. Il valore può essere ottenuto anche utilizzando la vista sys.dm_exec_query_stats, come le colonne total_physical_reads/ total_logical_writes/ total_logical_reads
Media durata (ms): tempo medio di esecuzione della query. Calcolato in base alle colonne total_elapsed_time e execution_count nella vista sys.dm_exec_query_stats
Conteggio piani: numero di piani di query duplicati. Un numero elevato richiede un’analisi e la potenziale parametrizzazione esplicita delle query
Conclusione
Abbiamo visto i vari riquadri di Sql Server Activity Monitor e illustrato nel dettaglio il significato dei vari campi presi in considerazione.
Consiglio di leggere la documentazione Microsoft per aspetti più dettagliati.