Есть ли способ узнать, какой оператор в хранимой процедуре TSQL потерпел крах? - PullRequest
2 голосов
/ 28 марта 2011

эта статья http://www.novicksoftware.com/tipsandtricks/tips-erorr-handling-in-a-stored-procedure.htm заявляет о разработке SQL Server: «ошибки должны проверяться после каждого заявления о заинтересованности sql». Довольно расплывчатые онлайн-описания отладчика sql для TSQL не опровергают и не поддерживают это утверждение.

Итак, действительно ли это так, что хранимой процедурой, которую легко отлаживать, является 50% кода, выделенного для обнаружения ошибок? Или есть более эффективные способы сделать это, которые могут приблизиться к простоте обнаружения сбоев, с которыми мы знакомы при отладке на основе трассировки стека в современных средах программирования?

Является ли это областью, которая требует создания умных новых инструментов, чтобы заполнить пробелы, оставленные несовершенством существующей среды программирования, или той, которая призывает меня освоить программу и изучить какой-то известный современный метод чтобы это было сделано?

ETA: получил на пробу, спасибо. Более того, здесь Запись стека вызовов SQL Server при сообщении об ошибках - это обсуждение того, как эмулировать трассировку стека, поскольку внешняя трассировка стека еще не поддерживается SQL Server. Ну, по крайней мере, это то, как это можно эмулировать в вашей собственной кодовой базе, написанной после обзора статьи - с устаревшей кодовой базой без всего этого было бы сложнее иметь дело.

1 Ответ

2 голосов
/ 28 марта 2011

Вы можете использовать:

ERROR_LINE()

для получения информации о линии, где возникла проблема. Чтобы использовать это, вы должны будете использовать «try ... catch» для обработки ошибок. Эта информация доступна в блоке «catch».

Документация: http://msdn.microsoft.com/en-us/library/ms175976.aspx

Примеры: http://blog.sqlauthority.com/2007/04/11/sql-server-2005-explanation-of-trycatch-and-error-handling/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...