Condividi tramite


Visualizzare e analizzare le tracce con SQL Server Profiler

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Usare SQL Server Profiler per visualizzare i dati di evento acquisiti in una traccia. SQL Server Profiler consente di visualizzare i dati in base alle proprietà definite della traccia. Un modo per analizzare i dati di SQL Server consiste nel copiare i dati in un altro programma, come il Database Engine Tuning Advisor. Se la colonna di dati Text è inclusa nella traccia, l'Advisor per l'ottimizzazione del motore di database può utilizzare un file di traccia contenente eventi di batch SQL e chiamate di procedura remota (RPC). Per assicurarsi che vengano acquisiti gli eventi e le colonne corretti da usare con il Database Engine Tuning Advisor, utilizzare il modello di ottimizzazione predefinito fornito con SQL Server Profiler.

Quando si apre una traccia con SQL Server Profiler, il file di traccia non occorre avere l'estensione di file .trc se il file è stato creato da SQL Server Profiler o da stored procedure di sistema di tracciamento SQL.

Nota

SQL Server Profiler è anche in grado di leggere file .log di Traccia SQL e file di script SQL generici. Per aprire un file di log di Traccia SQL che non abbia l'estensione .log, come ad esempio trace.txt, specificare SQLTrace_Log come formato del file.

È possibile configurare il formato di visualizzazione della data e dell'ora di SQL Server Profiler per semplificare l'analisi delle tracce.

Risoluzione dei problemi relativi ai dati

SQL Server Profiler consente di risolvere i problemi relativi ai dati raggruppando le tracce o i file di traccia in base alle colonne di dati Duration, CPU, Reads o Writes. Esempi di dati che potresti risolvere includono query che hanno prestazioni scarse o che hanno un numero eccezionalmente elevato di operazioni di lettura logica.

È possibile isolare informazioni aggiuntive salvando le tracce in tabelle e usando istruzioni Transact-SQL per eseguire query nei dati di evento. Ad esempio, per individuare gli eventi SQL:BatchCompleted per i quali il tempo di attesa è stato eccessivo, eseguire quanto segue:

SELECT  TextData, Duration, CPU  
FROM    trace_table_name  
WHERE   EventClass = 12 -- SQL:BatchCompleted events  
AND     CPU < (Duration * 1000)  

Nota

Il server indica la durata di un evento in microsecondi (10^-6 secondi) e la quantità di tempo della CPU usato dall'evento in millisecondi (10^-3 secondi). Nell'interfaccia utente grafica di SQL Server Profiler il valore della colonna Duration viene visualizzato in millisecondi per impostazione predefinita. Tuttavia, quando si salva una traccia in un file o in una tabella di database, il valore della colonna Duration viene scritto in microsecondi. Queste misurazioni sono per le query Transact-SQL (T-SQL).

Visualizzazione dei nomi degli oggetti durante la visualizzazione delle tracce

Per visualizzare il nome di un oggetto invece dell'identificatore dell'oggetto, ovveroObject ID, è necessario acquisire le colonne di dati Server Name e Database ID insieme alla colonna di dati Object Name .

Se si sceglie di basare il raggruppamento sulla colonna di dati Object ID assicurarsi di eseguire innanzitutto il raggruppamento in base alle colonne di dati Server Name e Database ID e quindi in base alla colonna di dati Object ID . . Analogamente, se si sceglie di basare il raggruppamento sulla colonna di dati Index ID , assicurarsi di eseguire innanzitutto il raggruppamento in base alle colonne di dati Server Name, Database IDe Object ID e quindi in base alle colonne di dati Index ID . È necessario attenersi a tale ordine durante il raggruppamento, poiché gli ID di oggetto e di indice non sono univoci nei server e nei database e negli oggetti relativi agli ID degli indici.

Individuazione di eventi specifici in una traccia

Per individuare e raggruppare gli eventi in una traccia, eseguire la procedura seguente:

  1. Crea la tua traccia.

    • Nella definizione della traccia includere le colonne di dati Event Class, ClientProcessIDe Start Time oltre alle altre colonne di dati che si desidera acquisire. Per altre informazioni, vedere Creare una traccia (SQL Server Profiler).

    • Raggruppare i dati acquisiti in base alla colonna di dati Event Classe salvare la traccia in un file o in una tabella. Per raggruppare i dati acquisiti, fare clic su Organizza colonne nella scheda Selezione eventi della finestra di dialogo Proprietà traccia. Per altre informazioni, vedere Organizzare le colonne visualizzate in una traccia (SQL Server Profiler).

    • Avviare la traccia e quindi arrestarla quando è trascorso l'intervallo di tempo appropriato o dopo l'acquisizione di un determinato numero di eventi.

  2. Determinare quali eventi si desidera individuare.

    • Aprire il file o la tabella di traccia ed espandere il nodo della classe di evento desiderata, ad esempio Deadlock Chain. Per altre informazioni, vedere Aprire un file di traccia (SQL Server Profiler) o Aprire una tabella di traccia (SQL Server Profiler).

    • Eseguire una ricerca nei dati della traccia fino a individuare gli eventi desiderati. Per semplificare la ricerca dei valori desiderati nella traccia, scegliere Trova dal menu Modifica di SQL Server Profiler. Prendere nota dei valori delle colonne di dati ClientProcessID e Start Time degli eventi tracciati.

  3. Visualizzare gli eventi nel contesto.

    • Visualizzare le proprietà della traccia ed eseguire il raggruppamento in base alla colonna di dati ClientProcessIDanziché alla colonna di dati Event Class .

    • Espandi il nodo di ogni ID di processo client che desideri visualizzare. Eseguire una ricerca manuale nella traccia oppure usare il comando Trova per individuare i valori Start Timedegli eventi desiderati, annotati in precedenza. Gli eventi vengono visualizzati in ordine cronologico con gli altri eventi che appartengono a ogni ID processo client selezionato. Ad esempio, gli eventi Deadlock e Deadlock Chain, acquisiti all'interno della traccia, vengono visualizzati immediatamente dopo gli eventi SQL:BatchStartingall'interno dell'ID processo client espanso.

È possibile utilizzare la stessa tecnica per individuare eventuali eventi raggruppati. Dopo avere trovato gli eventi desiderati, raggrupparli in base a ClientProcessID, ApplicationNameo a un'altra classe di evento, per visualizzare le attività correlate in ordine cronologico.

Vedi anche