Проблема номера строки хранимой процедуры SQL Server - PullRequest
12 голосов
/ 01 июня 2010

Я использую SQL Server 2008 Enterprise. Я столкнулся с проблемой, которая говорит, что строка 9 хранимой процедуры foo встречается с проблемой мертвой блокировки У меня вопрос, как найти именно 9-ю строку хранимой процедуры?

Моя путаница из-за проблемы с форматированием, как правильно найти 9-ю строку.

спасибо заранее, George

Ответы [ 3 ]

13 голосов
/ 13 июня 2011

Совет, который я узнал от другого ответа ...

Если вы делаете

sp_helptext (proc name)

SQL выведет свою «запомненную» версию оператора процедуры создания, и именно из этого он, по-видимому, получает номера строк. Если у вас есть SSMS в режиме 'grid output', она также выведет номера строк (как номера строк набора результатов).

Примечание: в моем случае это работало из оператора CREATE PROCEDURE плюс куча комментариев над ним, поэтому строка 1 была примерно на 6 строк выше вызова CREATE PROCEDURE.

6 голосов
/ 01 июня 2010

Это 9-я строка из оператора CREATE PROCEDURE. Оператор SQL часто является многострочным, поэтому «строка 9» будет ссылаться на первую строку оператора (например, INSERT или UPDATE)

Однако, если у вас есть комментарии выше CREATE PROCEDURE или пустые строки перед ним, вы не можете полагаться на это ... поэтому запустите ALTER PROC с ALTER PROC в качестве первой строки в пакете.

4 голосов
/ 22 июля 2011

Номера строк, выводимые sp_helptext, полностью отличаются от номера строки, который вы видите в сообщении об ошибке.

Например, в моей ошибке хранимой процедуры сказано, что ошибка произошла в строке 194, но на самом деле моя хранимая процедура показала только 136 строк, когда я показал sp_helptext. Кстати, я использовал SQL Server 2008.

...