Come trovare ciò che ha causato gli errori segnalati in una traccia del profiler di SQL Server?
-
03-07-2019 - |
Domanda
Stavo eseguendo una traccia su un SQL Server 2005 utilizzando il profiler e ho bisogno di scoprire cosa sta causando gli errori segnalati.
Ho usato il " vuoto " modello e selezionato tutte le colonne dei seguenti eventi:
- eccezione
- Evento di fuoriuscita di Exchange
- Avvisi di esecuzione
- Avvisi hash
- Statistiche sulle colonne mancanti
- Predicato di registrazione mancante
Ho notato un certo numero di questi errori in " TextData " colonna:
- Errore: 156, gravità: 16, stato: 0
- Errore: 208, gravità: 16, stato: 0
Ho cercato gli errori (sintassi errata, nome oggetto non valido), ma come posso sapere quale procedura memorizzata o query li sta causando?
Soluzione
Non preoccuparti degli errori 208. 208 è "oggetto non trovato". Il profiler li raccoglie grazie alla cosiddetta "risoluzione differita dei nomi".
Segui la seguente procedura.
CREATE PROCEDURE Demo AS
CREATE TABLE #Temp (ID int)
INSERT INTO #Temp VALUES (1)
SELECT ID FROM #Temp
GO
Quel proc funzionerà bene senza errori, tuttavia, se hai una traccia del profiler in esecuzione, vedrai una o due istanze dell'errore 208. È perché la tabella #Temp non esiste all'avvio del proc, che è quando il codice viene analizzato e associato. Il processo di associazione agli oggetti sottostanti fallisce.
Una volta eseguita la tabella di creazione, le altre istruzioni vengono ricompilate e associate alla tabella corretta ed eseguite senza errori.
L'unico posto in cui vedrai l'errore di risoluzione differito è nel profiler.
Altri suggerimenti
in sql 2005 non puoi. dovrai eseguire la traccia del profiler di SQL: StmtStarting, SQL: StmtCompleted, messaggi di errore utente ed eventi di eccezione con le colonne di testo, transazioneId, EventSequence e otehr necessarie per avere un quadro di ciò che sta succedendo.