Проблема с номером строки хранимой процедуры SQL Server

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

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

спасибо заранее, Джордж

Ответ 1

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

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

Ответ 2

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

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

sp_helptext procedure_name

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

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

Ответ 3

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

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