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.

Nota importanteImportante

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.

Processo di analisi eventi del Motore di database

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.

[!NOTA]

In SQL Server 2005 o versione successiva 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 2005 o versione successiva 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.

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.

Creare tracce manuali utilizzando stored procedure

Descrive come salvare risultati di traccia nel file in cui vengono scritti i risultati di traccia.

Salvare i risultati della traccia in un file

Descrive come migliorare l'accesso ai dati di traccia utilizzando spazio nella directory temp.

Migliorare l'accesso ai dati della traccia

Descrive come utilizzare stored procedure per creare una traccia.

Creare una traccia (Transact-SQL)

Descrive come utilizzare stored procedure per creare un filtro che recupera solo le informazioni necessarie su un evento di cui è in corso la traccia.

Impostare un filtro di traccia (Transact-SQL)

Descrive come utilizzare stored procedure per modificare una traccia esistente.

Modificare una traccia esistente (Transact-SQL)

Descrive l'utilizzo delle funzionalità integrate per visualizzare una traccia salvata.

Visualizzare una traccia salvata (Transact-SQL)

Descrive come utilizzare le funzioni predefinite per la visualizzazione delle informazioni sui filtri di traccia.

Visualizzare informazioni sui filtri (Transact-SQL)

Descrive come utilizzare le stored procedure per eliminare una traccia.

Eliminare una traccia (Transact-SQL)

Descrive come ridurre al minimo i costi di prestazioni provocati dall'utilizzo di una traccia.

Ottimizzare l'utilizzo di Traccia SQL

Descrive come filtrare una traccia per ridurre al minimo l'overhead che si verifica durante una traccia.

Filtrare una traccia

Descrive come ridurre la quantità di dati raccolta dalla traccia.

Limitare le dimensioni di file di traccia e tabelle

Descrive i due modi per pianificare le tracce in Microsoft SQL Server.

Pianificare tracce

Vedere anche

Altre risorse

Modelli e autorizzazioni di SQL Server Profiler

Guida alla programmazione di SMO (SQL Server Management Objects)