Traccia delle query SQL Server 

Introduzione

Questo strumento è accessibile da qualsiasi videata del software quando il database utilizzato è SQL Server™, dal menù Strumenti situato nella parte superiore della videata, che contiene le due seguenti scelte:

Attivazione traccia SQL Server

Questa funzione permette, grazie alla funzionalità di traccia in SQL Server, di attivare la registrazione di eventi sul database in un file, eventi che potranno in seguito essere analizzati.

Disattivazione traccia

Questa funzione lancia la rielaborazione del file di traccia ottenuto dall'attivazione, e poi la visualizzazione del risultato. Ciò permette di vedere tutte le azioni SQL eseguite durante l'attivazione.

Prerequisiti

Abilitazione

L'utente deve essere autorizzato ad usare il debugger (parametro DBG).

Vincolo tecnico

La funzione può funzionare solo se è installato un server di elaborazione e se è attivo sulla macchina del database.

Interfaccia utente

Quando si lancia la funzione, una videata permette di inserire un insieme di opzioni:

Recupero dei risultati

E' necessario indicare quali informazioni saranno raccolte per l'analisi.

L'opzione Standard permette di recuperare i piani di esecuzione delle query

L'opzione Tuning permette di recuperare delle informazioni sulle azioni SQL eseguite, così come i piani di esecuzione delle query.

L'utente può anche scegliere da solo gli eventi da raccogliere mediante "Parametrizzazione eventi avanzata". La finestra corrispondente gli permetterà di scegliere tutte le opzioni possibili.

Questi eventi sono raggruppati per tipo. Per maggiori informazioni sugli eventi, si dovrà fare riferimento alla documentazione Sql Server, di cui si troverà un estratto in allegato.

Opzioni di ordinamento

I comandi SQL sono dettagliati di default per ordine cronologico, ma è possibile precisare delle opzioni di ordinamento.

Vengono proposte più opzioni di ordinamento e si troveranno per primi i comandi corrispondenti al costo più importante secondo l'ordinamento richiesto.

Presentazione dei risultati

L'utente può scegliere di elencare solo le prime n registrazioni riportate.

Nel caso in cui si sia scelto un ordinamento, si otterranno i primi n eventi passati sul database che corrispondono al costo più importante di tale ordinamento.

Utilizzo della traccia ottenuta

Sarà possibile guardare la durata (duration) ottenuta al momento dell'esecuzione di query ed azioni SQL (ottenuta su evento "Completed")

Quando si otterrà un costo su queste azioni, si potrà guardare se la query è performante, e se utilizza correttamente gli indici

non si dovrà trovare Table Scan

non si dovrà trovare Constant Scan

Quando si trova l'utilizzo di un indice (Index Seek), bisogna verificare che si utilizzino al massimo le colonne dell'indice (nella parte "SEEK:")

Estratto della documentazione SQL Server

Questo riquadro elenca gli eventi che possono essere aggiunti o cancellati da una traccia.

Numero dell'evento.


Nome dell'evento


Descrizione

0-9

Reserved

 

10

RPC:Completed

Si verifica quando termina una chiamata di procedura remota (RPC).

11

RPC:Starting

Si verifica quando inizia una chiamata di procedura remota.

12

SQL:BatchCompleted

Si verifica quando finisce un lotto di istruzioni Transact-SQL.

13

SQL:BatchStarting

Si verifica quando viene avviato un lotto di istruzioni Transact-SQL.

14

Login

Si verifica quando un utente riesce a connettersi a SQL Server.

15

Logout

Si verifica quando un utente si disconnette da SQL Server.

16

Attention

Si verifica contemporaneamente agli eventi di avviso, come le richieste di interruzione del client o le interruzioni di connessione client.

17

ExistingConnection

Analizza tutte le attività degli utenti connessi a SQL Server prima dell'attivazione della traccia.

18

ServiceControl

Si verifica quando lo stato dei servizi di SQL Server viene modificato.

19

DTCTransaction

Traccia le transazioni coordinate da Microsoft Distributed Transaction Coordinator (MS DTC) tra due o più database.

20

Login Failed

Indica che è fallito un tentativo di connessione a SQL Server da parte di un client.

21

EventLog

Indica che gli eventi sono stati registrati nel log delle applicazioni di Microsoft Windows NT®.

22

ErrorLog

Indica che degli eventi di errore sono registrati nel log di errori di SQL Server.

23

Lock:Release

Indica che un lock su una risorsa, ad esempio una pagina, è stato sbloccato.

24

Lock:Acquire

Indica che un lock su una risorsa, ad esempio una pagina di dati, è stato acquisito.

25

Lock:Deadlock

Indica che due transazioni concorrenti hanno generato un interlock, uno tentando di ottenere dei lock incompatibili su delle risorse appartenenti all'altra.

26

Lock:Canceled

Indica che l'acquisizione di un lock su una risorsa è stata annullata (ad esempio a causa di un interlock).

27

Lock:Timeout

Indica che una richiesta di lock su una risorsa (ad esempio una pagina) ha superato il tempo di attesa perchè un'altra transazione conserva un lock bloccante sulla risorsa richiesta. Il tempo di attesa è determinato dalla funzione @@LOCK_TIMEOUT e può essere definito con l'aiuto dell'istruzione SET LOCK_TIMEOUT.

28

DOP Event

Si produce prima dell'esecuzione di un istruzione SELECT, INSERT o UPDATE.

29-31

Reserved

Utilizzare piuttosto l'evento 28.

32

Reserved

 

33

Exception

Indica che si è verificata un'eccezione in SQL Server.

34

SP:CacheMiss

Indica che una procedura memorizzata è introvabile nella cache di procedura.

35

SP:CacheInsert

Indica che un elemento è inserito nella cache di procedura.

36

SP:CacheRemove

Indica che un elemento è cancellato dalla cache di procedura.

37

SP:Recompile

Indica che una procedura memorizzata è stata ricompilata.

38

SP:CacheHit

Indica che una procedura memorizzata viene trovata nella cache di procedura.

39

SP:ExecContextHit

Indica quando la versione di esecuzione di una procedura memorizzata è stata trovata nella cache.

40

SQL:StmtStarting

Si verifica quando l'istruzione Transact-SQL viene attivata.

41

SQL:StmtCompleted

Si verifica quando finisce l'istruzione Transact-SQL.

42

SP:Starting

Indica che la procedura memorizzata è avviata.

43

SP:Completed

Indica che la procedura memorizzata è terminata.

44

Reserved

Utilizzare piuttosto l'evento 40.

45

Reserved

Utilizzare piuttosto l'evento 41.

46

Objetct:Created

Indica che un oggetto è stato creato, ad esempio, con le istruzioni CREATE INDEX, CREATE TABLE e CREATE DATABASE.

47

Objetct:Deleted

Indica che un oggetto è stato cancellato, ad esempio, con le istruzioni DROP INDEX e DROP TABLE.

48

Reserved

 

49

Reserved

 

50

SQL Transaction

Traccia le istruzioni Transact-SQL BEGIN, COMMIT, SAVE e ROLLBACK TRANSACTION.

51

Scan:Started

Indica che un'analisi di tabella o di indice è stata avviata.

52

Scan:Stopped

Indica che un'analisi di tabella o di indice è terminata.

53

CursorOpen

Indica che un cursore è aperto in un'istruzione Transact-SQL da ODBC, OLE DB o DB-Library.

54

Transaction Log

Traccia in quale momento le transazioni vengono scritte nel log delle transazioni.

55

HashWarning

Indica che un'operazione di hashing (hash joint, hash aggregation, hash union, hash distinct) che non è in corso su una cache di partizione viene ribaltata su un piano di ricarico. Ciò si verifica a causa della profondità di ricorrenza, dello slittamento dei dati, dei flag di traccia o del conteggio dei bit.

56-57

Reserved

 

58

Auto Update Stats

Indica che si è verificato un aggiornamento automatico delle statistiche di indice.

59

Lock:Deadlock Chain

Prodotto per ciascuno degli eventi che implicano il lock.

60

Lock:Escalation

Si verifica quando l'estensione dei lock è aumentata. Esempio: lock di riga aumentato o convertito in lock di pagina.

61

OLE DB Errors

Indica che si è verificato un errore OLE DB.

62-66

Reserved

 

67

ExecutionWarnings

Indica i messaggi di avviso sopravvenuti al momento dell'esecuzione di un'istruzione o di una stored procedure SQL Server.

68

Execution Plan

Visualizza la struttura del piano dell'istruzione SQL eseguita.

69

Sort Warnings

Indica le operazioni di ordinamento che non si possono effettuare in memoria. Non include le operazioni di ordinamento che comprendono la creazione di indici, solo le operazioni di ordinamento all'interno di una query (una clausola ORDER BY in un ordine SELECT, ad esempio).

70

CursorPrepare

Indica che un cursore in un'istruzione Transact-SQL è pronto per essere utilizzato da ODBC, OLE DB o DB-Library.

71

Prepare SQL

ODBC, OLE DB o DB-Library ha preparato una o più istruzioni Transact-SQL da utilizzare.

72

Exec Prepared SQL

ODBC, OLE DB o DB-Library ha eseguito una o più istruzioni Transact-SQL preparate.

73

Unprepare SQL

ODBC, OLE DB o DB-Library ha eseguito una o più istruzioni Transact-SQL preparate.

74

CursorExecute

Un cursore precedentemente preparato in un'istruzione Transact-SQL via ODBC, OLE DB o DB-Library viene eseguito.

75

CursorRecompile

Un cursore aperto in un'istruzione Transact-SQL via ODBC o DB-Library è stato ricompilato sia direttamente, sia a causa di un cambiamento di schema.

Attivato per i cursori ANSI e non-ANSI.

76

CursorImplicitConversion

Un cursore in un'istruzione Transact-SQL è convertito da SQL Server da un tipo ad un altro.

Attivato per i cursori ANSI e non-ANSI.

77

CursorUnprepare

Un cursore preparato in un'istruzione Transact-SQL viene annullato via ODBC, OLE DB o DB-Library.

78

CursorClose

Un cursore precedentemente aperto in un'istruzione Transact-SQL via ODBC, OLE DB o DB-Library viene chiuso.

79

Missing Column Statistics

Delle statistiche di colonna che avrebbero potuto essere utili per l'ottimizzatore non sono disponibili.

80

Missing Join Predicate

E' in corso di esecuzione una query senza join predicate. Ciò può rendere la query lunga da eseguire.

81

Server Memory Change

L'utilizzo della memoria di Microsoft SQL Server è aumentato o diminuito, o di 1 megabyte (Mb), o del 5% della dimensione massima della memoria, a seconda di quella più grande.

82-91

User Configurable (0 -9)

Dati eventi definiti dall'utente.

92

Data File Auto Grow

Indica che un file log è stato automaticamente incrementato dal server.

93

Log File Auto Grow

Indica che un file log è stato automaticamente incrementato dal server.

94

Data File Auto Shrink

Indica che un data file è stato automaticamente ridotto dal server.

95

Log File Auto Shrink

Indica che un data file è stato automaticamente ridotto dal server.

96

Show Plan Text

Visualizza la struttura del piano di richiesta dell'istruzione SQL partendo dall'ottimizzatore di query.

97

Show Plan ALL

Visualizza il piano di query, con i dettagli completi della compilazione dell'istruzione SQL in corso di esecuzione.

98

Show Plan Statistics

Visualizza il piano di richiesta, con i dettagli completi dell'esecuzione dell'istruzione SQL in corso.

99

Reserved

 

100

RPC Output Parameter

Produce i valori di output dei parametri per tutte le RPC.

101

Reserved

 

102

Audit Statement GDR

Si verifica ogni volta che GRANT, DENY o REVOKE vengono emessi da un utente per un'autorizzazione di istruzione in SQL Server.

103

Audit Object GDR

Si verifica ogni volta che GRANT, DENY o REVOKE vengono emessi da un utente per un'autorizzazione d'oggetto in SQL Server.

104

Audit Add/Drop Login

Si verifica quando una connessione di accesso SQL Server viene aggiunta o cancellata; per sp_addlogin e sp_droplogin.

105

Audit Login GDR

Si verifica quando un privilegio di connessione Microsoft Windows® viene aggiunto o cancellato; per sp_grantlogin, sp_revokelogin e sp_denylogin.

106

Audit Login Change Property

Si verifica quando una proprietà di una connessione di accesso, tranne per le password, viene modificata; per sp_defaultdb e sp_defaultlanguage.

107

Audit Login Change Password

Si verifica quando la password di una connessione di accesso SQL Server viene modificata.

Le password non vengono registrate.

108

Audit Add Login to Server Role

Si verifica quando una connessione di accesso viene aggiunta o cancellata da un ruolo di server fisso; per sp_addsrvrolemember e sp_dropsrvrolemember.

109

Audit Add DB User

Si verifica quando una connessione di accesso viene aggiunta o cancellata sotto forma di un utente di database (Windows o SQL Server) in un database; per sp_grantdbaccess, sp_revokedbaccess, sp_adduser e sp_dropuser.

110

Audit Add Member to DB

Si verifica quando una connessione di accesso viene aggiunta o cancellata sotto forma di un utente di database (fisso o definito dall'utente) in un database; per sp_addrolemember, sp_droprolemember e sp_changegroup.

111

Audit Add/Drop Role

Si verifica quando una connessione di accesso viene aggiunta o cancellata sotto forma di un utente di database in un database; per sp_addrole e sp_droprole.

112

App Role Pass Change

Si verifica quando la password di un ruolo applicativo viene modificata.

113

Audit Statement Permission

Si verifica quando viene utilizzata un'autorizzazione di instruzione (ad esempio, CREATE TABLE).

114

Audit Object Permission

Si verifica quando viene utilizzata un'autorizzazione d'oggetto (ad esempio, SELECT) in modo positivo o no.

115

Audit Backup/Restore

Si verifica quando viene emesso un ordine BACKUP o RESTORE

116

Audit DBCC

Si verifica quando vengono emessi degli ordini DBCC.

117

Audit Change Audit

Si verifica quando vengono effettuate delle modifiche di traccia di audit.

118

Audit Object Derived Permission

Si verifica quando vengono emessi ordini d'oggetti CREATE, ALTER e DROP.

Errori

Oltre ai messaggi generici, i seguenti messaggi d'errore possono apparire al momento dell'inserimento :

"Errore al momento dell'accesso al server del database"

L'accesso alla macchina del database non è possibile, non esiste server di elaborazione o non è avviato.

"Errore di accesso alla directory delle tracce del database"

La directory indicata come directory delle tracce non è accessibile