2010-06-01 17 views
10

Używam programu SQL Server 2008 Enterprise. Spotkałem się z problemem, który mówi, że wiersz 9 procedury przechowywanej foo spotyka się z problemem dead lock. Moje pytanie brzmi: jak znaleźć dokładnie dziewiąty wiersz procedury przechowywanej?Problem z numerem wiersza procedury składowanej SQL Server

Moje zamieszanie wynika z problemu z formatowaniem kodu, jak poprawnie zlokalizować dziewiąty wiersz.

góry dzięki, George

+1

Marc, czy masz jakieś doświadczenie, aby podzielić się tym, jak znaleźć dokładniej numer wiersza? – George2

Odpowiedz

5

To 9. linia od CREATE PROCEDURA oświadczeniu. Instrukcja SQL jest często wielowierszowa, więc "wiersz 9" będzie odnosił się do pierwszej linii instrukcji (np. INSERT lub UPDATE)

Jeśli jednak masz komentarze powyżej CREATE PROCEDURE lub puste wiersze przed nim, to nie możesz polegać na tym ... więc uruchom ALTER PROC z ALTER PROC jako pierwszą linią w partii.

+0

1. Więc najbardziej niezawodnym sposobem jest użycie alter proc z SQL Server Management Studio, a następnie zliczenie numeru linii? 2. Czy mam usunąć komentarze powyżej procedury składowania z kodu alter proc wygenerowanego przez SQL Server Management Studio? – George2

+0

My zamieszanie jest o tym, czy linie Powyższe procedury alter będzie liczony jako linia numer count - „SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER NA Go”, a także, jak traktować oświadczenie wielo-line w procedurze magazynu do czynienia z linią liczba liczb? – George2

+1

To linia XX z CREATE PROC – gbn

12

Końcówka dowiedziałem się od another answer ...

Jeśli nie

sp_helptext (proc name) 

SQL wyświetli jego wersja „pamiętał” procedury CREATE, a to jest to, co dostaje to numery linii z pozoru. Jeśli masz SSMS w trybie "grid output", to również wypisze numery linii (jako numery wierszy zestawu wyników).

UWAGA: w moim przypadku działał on z instrukcji CREATE PROCEDURE plus kilka komentarzy powyżej, więc linia 1 miała około 6 linii powyżej wywołania CREATE PROCEDURE.

+0

+1 dla 'sp_helpext'. Dzięki! – LeopardSkinPillBoxHat

+2

Podobnie jak FYI w moim przypadku było to 'sp_helptext proc_name' bez parens. Pareny mogły znajdować się w tym przykładzie w innym celu, ale nie zadziałało, dopóki ich nie wyjąłem. +1! – Shrout1

4

Numery linii wysyłane przez sp_helptext są całkowicie różne od numeru wiersza widocznego w komunikacie o błędzie.

Na przykład w mojej procedurze przechowywanej błąd stwierdził, że błąd wystąpił na linii numer 194, ale faktycznie moja procedura przechowywana pokazała tylko 136 linii, kiedy pokazałem sp_helptext. BTW, użyłem SQL Server 2008.

+1

Myślę, że najlepiej będzie ponownie uruchomić SP za pomocą skryptu zmian i upewnij się, że procedura alter jest w pierwszym wierszu i nie ma komentarzy itp. Powyżej. wtedy przedstawione numery wierszy błędu powinny być zgodne. – Christo

Powiązane problemy