Condividi tramite


Visualizzazione e analisi delle tracce tramite SQL Server Profiler

SQL Server Profiler consente di visualizzare i dati degli eventi acquisiti in una traccia. I dati vengono visualizzati in SQL Server Profiler in base alle proprietà definite per la traccia. Per analizzare i dati di SQL Server è possibile copiarli in un altro programma, ad esempio SQL Server o Ottimizzazione guidata Motore di database. Se la colonna di dati Text è inclusa nella traccia, in Ottimizzazione guidata Motore di database è possibile utilizzare un file di traccia contenente eventi correlati a batch SQL e chiamate di procedura remota (RPC, Remote Procedure Call). Per ulteriori informazioni, vedere Ottimizzazione della progettazione fisica di database. Per assicurarsi di acquisire gli eventi e le colonne corretti da utilizzare con Ottimizzazione guidata Motore di database, utilizzare il modello di ottimizzazione predefinito disponibile in SQL Server Profiler.

Quando si apre una traccia utilizzando SQL Server Profiler, non è necessario specificare l'estensione di file trc per il file di traccia, se tale file è stato creato da stored procedure sistema di SQL Server Profiler o di Traccia SQL.

[!NOTA]

SQL Server Profiler consente inoltre di leggere file log di Traccia SQL e file script SQL generici. Per l'apertura di un file log di Traccia SQL senza estensione log, ad esempio un file denominato 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. I dati che possono essere inclusi nella risoluzione dei problemi corrispondono a query con prestazioni insufficienti o che generano un numero estremamente elevato di operazioni di letture logiche.

È possibile isolare informazioni aggiuntive salvando le tracce in tabelle e utilizzando 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 le istruzioni seguenti:

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

[!NOTA]

A partire da SQL Server 2005 il server indica la durata di un evento in microsecondi (un milionesimo o 10-6 di secondo) e la quantità di tempo della CPU utilizzato dall'evento in millisecondi (un millesimo o 10-3 di secondo). In SQL Server 2000, il server indica sia la durata che il tempo CPU in millisecondi. In SQL Server 2005 e versioni successive per impostazione predefinita nell'interfaccia utente grafica di SQL Server Profiler il valore della colonna Duration viene visualizzato in millisecondi. Tuttavia, quando si salva una traccia in un file o in una tabella di database, il valore della colonna Duration viene scritto in microsecondi.

Visualizzazione dei nomi degli oggetti durante la visualizzazione delle tracce

Per visualizzare il nome di un oggetto invece dell'identificatore dell'oggetto, ovvero Object 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 ID e Object ID e quindi in base alla colonna 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. Creare la traccia.

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

    • Raggruppare i dati acquisiti in base alla colonna di dati Event Class e 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 ulteriori informazioni, vedere Procedura: Organizzazione delle colonne visualizzate in una traccia (SQL Server Profiler).

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

  2. Determinare quali eventi si desidera individuare.

  3. Visualizzare gli eventi nel contesto.

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

    • Espandere il nodo di ogni ID di processo client che si desidera visualizzare. Eseguire una ricerca manuale nella traccia oppure utilizzare il comando Trova per individuare i valori Start Time degli eventi desiderati, annotati in precedenza. Gli eventi vengono visualizzati in ordine cronologico insieme agli altri eventi che appartengono all'ID di processo client selezionato. Ad esempio, gli eventi Deadlock e Deadlock Chain, acquisiti nella traccia, seguiranno gli eventi SQL:BatchStarting nell'ambito dell'ID di processo client espanso.

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