Как определить, что ошибка TSQL - это ошибка времени выполнения или ошибка разбора? - PullRequest
0 голосов
/ 15 марта 2011

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

asdf

, я получу

Сообщение 2812, уровень 16, состояние 62, строка 1 Не удалось найти хранимую процедуру «asdf».

Когда я выполню

asdf sdf asdf

Я получу

Сообщение 102, Уровень 15, Состояние 1, Строка 1 Неверный синтаксис рядом с 'asdf'.

Ответы [ 2 ]

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

Пакеты с ошибками разбора и ошибками привязки не будут генерировать план выполнения. Пакеты с ошибками во время выполнения будут. Не уверен, если есть какой-либо другой способ сообщить источник ошибки.

/*Parse Error*/
SELEC * FROM master..spt_values

GO

/*Bind Error*/
SELECT * FROM master..spt_values_

GO

/*Runtime Error*/
SELECT 1/high FROM master..spt_values
1 голос
/ 15 марта 2011

Вы можете использовать уровень, чтобы различать различные виды ошибок.См. Описание уровней ошибок: Серьезность ошибок компонента Database Engine .

Если вам нужно, вы можете также использовать сообщения об ошибках, перечисленные в sys.messages, но имейте в виду, что естьоколо 9000 различных возможных сообщений.

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