Traccia SQL
In Traccia SQL vengono raccolti unicamente gli eventi che rappresentano istanze delle classi di evento elencate nella definizione di traccia. Tali eventi possono essere esclusi dalla traccia tramite un filtro oppure essere inseriti in coda per la relativa destinazione. La destinazione può essere un file o SQL Server Management Objects (SMO), che è in grado di utilizzare le informazioni della traccia nelle applicazioni che gestiscono SQL Server.
Importante |
---|
Questa funzionalità verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. In alternativa, utilizzare Eventi estesi. |
Vantaggi di Traccia SQL
In Microsoft SQL Server sono disponibili stored procedure di sistema Transact-SQL per la creazione di tracce per un'istanza di Motore di database di SQL Server. È possibile utilizzare tali stored procedure di sistema all'interno di applicazioni personalizzate per creare tracce in modo manuale anziché tramite SQL Server Profiler. Ciò consente di creare applicazioni personalizzate in grado di soddisfare esigenze aziendali specifiche.
Architettura di Traccia SQL
L'origine di un evento può essere qualsiasi origine che genera l'evento di traccia, ad esempio batch Transact-SQL o eventi di SQL Server quali i deadlock. Per ulteriori informazioni sugli eventi, vedere Guida di riferimento alla classe di evento SQL Server. Dopo che è stato generato un evento, se la classe di evento è stata inclusa in una definizione di traccia, le informazioni relative all'evento verranno raccolte dalla traccia. Se nella definizione di traccia sono stati definiti filtri per la classe di evento, tali filtri verranno applicati e le informazioni sull'evento di traccia verranno passate a una coda. Le informazioni di traccia verranno quindi scritte in un file o potranno essere utilizzate da SMO nelle applicazioni, ad esempio SQL Server Profiler. Nella figura seguente viene illustrata la modalità di raccolta degli eventi in Traccia SQL durante la creazione di una traccia.
Terminologia relativa a Traccia SQL
Di seguito vengono definiti i concetti fondamentali di Traccia SQL.
Evento
L'occorrenza di un'azione in un'istanza di Microsoft Motore di database di SQL Server.colonna di dati
Attributo di un evento.Classe di evento
Tipo di evento che è possibile tracciare. La classe di evento contiene tutte le colonne di dati che possono essere restituite da un evento.Categoria di evento
Gruppo di classi di evento correlate.traccia
Raccolta di eventi e dati restituiti da Motore di database.tracciare
Acquisire e monitorare gli eventi in un'istanza di SQL Server.definizione ditraccia
Raccolta delle classi di evento, delle colonne di dati e dei filtri che identificano i tipi di evento da acquisire in una traccia.filtro
Criteri in base ai quali vengono selezionati gli eventi per una traccia.file di traccia
File creato quando si salva una traccia.modello
In SQL Server Profiler, file che definisce le classi di evento e le colonne di dati da acquisire in una traccia.Tabella di traccia
In SQL Server Profiler, tabella creata quando viene salvata una traccia in una tabella.
Utilizzare le colonne di dati per descrivere gli eventi restituiti
Traccia SQL utilizza le colonne di dati nell'output di traccia per descrivere gli eventi restituiti quando viene eseguita la traccia. Nella tabella seguente vengono descritte le colonne di dati di SQL Server Profiler che sono le stesse utilizzate da Traccia SQL e vengono indicate le colonne selezionate per impostazione predefinita.
Colonna di dati |
Numero colonna |
Descrizione |
---|---|---|
ApplicationName 1 |
10 |
Nome dell'applicazione client tramite cui è stata creata la connessione a un'istanza di SQL Server. Questa colonna viene popolata con i valori passati dall'applicazione anziché con il nome visualizzato del programma. |
BigintData1 |
52 |
Valore (tipo di dati bigint) che dipende dalla classe di evento specificata nella traccia. |
BigintData2 |
53 |
Valore (tipo di dati bigint) che dipende dalla classe di evento specificata nella traccia. |
Binary Data |
2 |
Valore binario che dipende dalla classe di evento acquisita nella traccia. |
ClientProcessID 1 |
9 |
ID assegnato dal computer host al processo in cui è in esecuzione l'applicazione client. Questa colonna di dati viene popolata se il client fornisce l'ID del processo client. |
ColumnPermissions |
44 |
Indica se è stata impostata un'autorizzazione a livello di colonna. È possibile analizzare il testo dell'istruzione per determinare con esattezza quali autorizzazioni sono state impostate per quali colonne. |
CPU |
18 |
Tempo della CPU in millisecondi utilizzato dall'evento. |
Database ID 1 |
3 |
ID del database specificato dall'istruzione USE database_name oppure ID del database predefinito, se per una determinata istanza non viene eseguita alcuna istruzione USE database_name. Se la colonna di dati Server Name viene acquisita nella traccia e il server è disponibile, SQL Server Profiler visualizza il nome del database. È possibile determinare il valore per un database utilizzando la funzione DB_ID. |
DatabaseName |
35 |
Nome del database in cui è in esecuzione l'istruzione dell'utente. |
DBUserName 1 |
40 |
Nome utente di SQL Server del client. |
Duration |
13 |
Durata dell'evento in microsecondi.
|
EndTime |
15 |
Ora di fine dell'evento. Questa colonna non viene popolata per le classi di evento che fanno riferimento all'avvio di un evento, quali SQL:BatchStarting o SP:Starting. |
Error |
31 |
Numero di errore di un determinato evento. In genere corrisponde al numero di errore archiviato in sysmessages. |
EventClass 1 |
27 |
Tipo di classe di evento acquisita. |
EventSequence |
51 |
Numero di sequenza dell'evento. |
EventSubClass 1 |
21 |
Tipo di sottoclasse di evento, che offre informazioni aggiuntive su ogni classe di evento. Ad esempio, i valori della sottoclasse della classe di evento Execution Warning rappresentano il tipo di avviso di esecuzione: 1 = attesa della query. Tempo di attesa delle risorse, ad esempio della memoria, prima dell'esecuzione della query. 2 = timeout della query. Timeout della query durante l'attesa delle risorse necessarie per l'esecuzione. Questa colonna di dati non viene popolata per tutte le classi di evento. |
GUID |
54 |
Valore GUID che dipende dalla classe di evento specificata nella traccia. |
FileName |
36 |
Nome logico del file modificato. |
Handle |
33 |
Valore intero utilizzato da ODBC, OLE DB o DB-Library per il coordinamento dell'esecuzione con il server. |
HostName 1 |
8 |
Nome del computer che esegue il client. Questa colonna di dati viene popolata se il client fornisce il nome host. Per determinare il nome host, utilizzare la funzione HOST_NAME. |
IndexID |
24 |
ID dell'indice dell'oggetto interessato dall'evento. Per determinare l'ID di indice di un oggetto, utilizzare la colonna indid della tabella di sistema sysindexes. |
IntegerData |
25 |
Valore intero che dipende dalla classe di evento acquisita nella traccia. |
IntegerData2 |
55 |
Valore intero che dipende dalla classe di evento acquisita nella traccia. |
IsSystem |
60 |
Indica se l'evento si è verificato in un processo di sistema o in un processo utente: 1 = sistema 0 = utente |
LineNumber |
5 |
Contiene il numero della riga contenente l'errore. Per gli eventi associati a istruzioni Transact-SQL, come SP:StmtStarting, in LineNumber è contenuto il numero di riga dell'istruzione nella stored procedure o nel batch. |
LinkedServerName |
45 |
Nome del server collegato. |
LoginName |
11 |
Nome dell'account di accesso dell'utente (account di sicurezza di SQL Server o credenziali di accesso di Windows nel formato DOMINIO\Nomeutente). |
LoginSid 1 |
41 |
ID di sicurezza (SID) dell'utente connesso. Tali informazioni sono disponibili nella vista sys.server_principals del database master. L'ID è univoco per ogni account di accesso al server. |
MethodName |
47 |
Nome del metodo OLE DB. |
Mode |
32 |
Valore intero utilizzato da vari eventi per descrivere uno stato richiesto o ricevuto dall'evento. |
NestLevel |
29 |
Valore intero che rappresenta i dati restituiti da @@NESTLEVEL. |
NTDomainName 1 |
7 |
Dominio di Windows a cui appartiene l'utente. |
NTUserName 1 |
6 |
Nome utente di Windows. |
ObjectID |
22 |
ID dell'oggetto assegnato dal sistema. |
ObjectID2 |
56 |
ID dell'entità o dell'oggetto correlato, se disponibile. |
ObjectName |
34 |
Nome dell'oggetto a cui si fa riferimento. |
ObjectType 2 |
28 |
Valore che rappresenta il tipo di oggetto coinvolto nell'evento. Questo valore corrisponde alla colonna type nella tabella sysobjects. |
Offset |
61 |
Offset iniziale dell'istruzione nella stored procedure o nel batch. |
OwnerID |
58 |
Solo per eventi di blocco. Tipo dell'oggetto proprietario di un blocco. |
OwnerName |
37 |
Nome utente del database per il proprietario dell'oggetto. |
ParentName |
59 |
Nome dello schema contenente l'oggetto. |
Permissions |
19 |
Valore intero che rappresenta il tipo di autorizzazioni controllato. I valori validi sono: 1 = SELECT ALL 2 = UPDATE ALL 4 = REFERENCES ALL 8 = INSERT 16 = DELETE 32 = EXECUTE (solo procedure) 4096 = SELECT ANY (almeno una colonna) 8192 = UPDATE ANY 16384 = REFERENCES ANY |
ProviderName |
46 |
Nome del provider OLE DB. |
Reads |
16 |
Numero delle operazioni di lettura del disco logico eseguite dal server in relazione all'evento. Queste operazioni includono tutte le letture dalle tabelle e dai buffer durante l'esecuzione dell'istruzione. |
RequestID |
49 |
ID della richiesta contenente l'istruzione. |
RoleName |
38 |
Nome del ruolo applicazione in corso di abilitazione. |
RowCounts |
48 |
Numero di righe del batch. |
ServerName 1 |
26 |
Nome dell'istanza di SQL Server tracciata. |
SessionLoginName |
64 |
Nome dell'account di accesso dell'utente che ha avviato la sessione. Ad esempio, se si attiva la connessione a SQL Server con l'account di accesso Login1 e si esegue un'istruzione con l'account di accesso Login2, SessionLoginName indica Login1, mentre LoginName indica Login2. In questa colonna vengono visualizzati sia gli account di accesso di SQL Server che quelli di Windows. |
Severity |
20 |
Livello di gravità dell'evento di eccezione. |
SourceDatabaseID |
62 |
ID del database di origine dell'oggetto. |
SPID |
12 |
ID del processo server (SPID) che SQL Server assegna al processo associato al client. |
SqlHandle |
63 |
Hash a 64 bit basato sul testo di una query ad hoc oppure ID del database e dell'oggetto di un oggetto SQL. È possibile passare questo valore a sys.dm_exec_sql_text() per recuperare il testo SQL associato. |
StartTime 1 |
14 |
Ora di inizio dell'evento, se disponibile. |
State |
30 |
Codice dello stato di errore. |
Success |
23 |
Indica l'esito dell'evento. I possibili valori sono: 1 = esito positivo. 0 = esito negativo. Ad esempio, 1 indica l'esito positivo di un controllo delle autorizzazioni e 0 indica l'esito negativo di tale controllo. |
TargetLoginName |
42 |
Per le azioni relative a un account di accesso, ad esempio l'aggiunta di un nuovo account di accesso, il nome dell'account di accesso specifico. |
TargetLoginSid |
43 |
Per le azioni relative a un account di accesso, ad esempio l'aggiunta di un nuovo account di accesso, il SID dell'account di accesso specifico. |
TargetUserName |
39 |
Per le azioni relative a un utente del database, ad esempio la concessione di un'autorizzazione a un utente, il nome di tale utente. |
TextData |
1 |
Valore di testo che dipende dalla classe di evento acquisita nella traccia. Se si esegue la traccia di una query con parametri, le variabili visualizzate non includeranno valori di dati nella colonna TextData. |
ID transazione |
4 |
ID della transazione assegnato dal sistema. |
Tipo |
57 |
Valore intero che dipende dalla classe di evento acquisita nella traccia. |
Writes |
17 |
Numero di operazioni di scrittura fisiche su disco eseguite dal server in relazione all'evento. |
XactSequence |
50 |
Token utilizzato per descrivere la transazione corrente. |
1 Queste colonne di dati vengono popolate automaticamente per tutti gli eventi.
2 Per ulteriori informazioni sulla colonna di dati ObjectType, vedere Colonna ObjectType per gli eventi di traccia.
Attività di Traccia SQL
Descrizione dell'attività |
Argomento |
---|---|
Descrive come creare ed eseguire tracce utilizzando stored procedure Transact-SQL. |
Creare ed eseguire tracce utilizzando stored procedure Transact-SQL |
Descrive come creare tracce manuali utilizzando stored procedure su un'istanza di Motore di database di SQL Server. |
|
Descrive come salvare risultati di traccia nel file in cui vengono scritti i risultati di traccia. |
|
Descrive come migliorare l'accesso ai dati di traccia utilizzando spazio nella directory temp. |
|
Descrive come utilizzare stored procedure per creare una traccia. |
|
Descrive come utilizzare stored procedure per creare un filtro che recupera solo le informazioni necessarie su un evento di cui è in corso la traccia. |
|
Descrive come utilizzare stored procedure per modificare una traccia esistente. |
|
Descrive l'utilizzo delle funzionalità integrate per visualizzare una traccia salvata. |
|
Descrive come utilizzare le funzioni predefinite per la visualizzazione delle informazioni sui filtri di traccia. |
|
Descrive come utilizzare le stored procedure per eliminare una traccia. |
|
Descrive come ridurre al minimo i costi di prestazioni provocati dall'utilizzo di una traccia. |
|
Descrive come filtrare una traccia per ridurre al minimo l'overhead che si verifica durante una traccia. |
|
Descrive come ridurre la quantità di dati raccolta dalla traccia. |
|
Descrive i due modi per pianificare le tracce in Microsoft SQL Server. |
Vedere anche
Altre risorse
Modelli e autorizzazioni di SQL Server Profiler
Guida alla programmazione di SMO (SQL Server Management Objects)