Проблема с номером строки хранимой процедуры 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.