2009-05-01 5 views
5

Uruchomiłem śledzenie na Sql Server 2005 za pomocą profilera i trzeba dowiedzieć się, co jest przyczyną zgłaszanych błędów.Jak znaleźć przyczynę błędów zgłoszonych w śledzeniu profilera programu SQL Server?

użyłem "Blank" szablon, a wybrane wszystkie kolumny z następujących zdarzeń:

  • wyjątek
  • Exchange rozlanie imprez
  • Ostrzeżenia Wykonanie
  • Hash Ostrzeżenia
  • Missing Column Statistics
  • Brakujące wstępne orzeczenie

zauważyliśmy liczbę tych błędów w "TextData" kolumna:

  • błędu: 156, ciężkości 16, Stan: 0
  • błędu: 208, ciężkości 16, Stan: 0

Sprawdziłem błędy (Nieprawidłowa składnia, Niepoprawna nazwa obiektu), ale jak mogę stwierdzić, która procedura składowana lub zapytanie ich powoduje?

Odpowiedz

7

Nie martw się o błędy 208. 208 to "Obiekt nie znaleziony". Profiler podnosi je z powodu tak zwanego "rozpoznawania nazw odroczonych".

Wykonaj następującą procedurę.

CREATE PROCEDURE Demo AS 
    CREATE TABLE #Temp (ID int) 
    INSERT INTO #Temp VALUES (1) 
    SELECT ID FROM #Temp 
GO 

To Proc będzie działać dobrze bez żadnych błędów, jednak jeśli masz uruchomiony śledzenia profilera, zobaczysz jeden lub dwa wystąpienia błędu 208. To dlatego, że tabela #temp nie istnieje gdy Proc rozpoczyna się, kiedy kod jest parsowany i związany. Proces wiązania z obiektami bazowymi kończy się niepowodzeniem.

Po uruchomieniu tworzenia tabeli pozostałe instrukcje są rekompilowane i przypisywane do właściwej tabeli i działają bez błędów.

Jedynym miejscem, w którym zobaczysz błąd odroczonej rozdzielczości, jest profiler.

+0

SPID wydaje się być jedynym sposobem korelacji 208 wierszy z wierszami SP: Starting i SP: Completed. Używając tego, wydaje się to poprawne, te 208 zawsze wydają się przychodzić tuż przed wywołaniem procedury przechowywanej, która używa tabel tymczasowych. –

+0

IIRC, istnieje element Connect do usuwania tych elementów z Profiler, ponieważ często są źle interpretowane i ponieważ ukrywają prawdziwe błędy 208. – GilaMonster

1

w sql 2005 nie można. będziesz musiał uruchomić śledzenie profilera SQL: StmtStarting, SQL: StmtCompleted, komunikat o błędzie użytkownika i zdarzenia wyjątków z tekstem, transactionId, EventSequence i innymi kolumnami, aby uzyskać obraz tego, co się dzieje.

+0

Dodałem SQL: StmtStarting i SQL: StmtCompleted, ale dostałem tylko "USE DBname". Zmieniłem na SP: Starting i SP: Completed i otrzymałem polecenia. –

Powiązane problemy