Отладка «Неверный синтаксис» Исключение - PullRequest
0 голосов
/ 12 мая 2010

Недавно я работал с компонентом COM +, который обрабатывает входной XML-файл и выполняет ряд обновлений базы данных на основе предоставленных данных.

Запуск SQL Profiler с исключением EventClass и выбранным сообщением об ошибке пользователя, я вижу:

Ошибка исключения: 102, серьезность: 15, состояние: 1
Сообщение об ошибке пользователя Неверный синтаксис около '3'.

Однако я действительно хочу увидеть полный SQL-код, предоставляемый компонентом COM +.

Есть ли у меня возможность использовать Profiler или другое средство для перехвата оператора SQL, отправленного на SQL Server?

Этот компьютер использует SQL Server 2005, а объект COM + написан на Delphi.

Ответы [ 2 ]

1 голос
/ 14 мая 2010

Необходимые события: SQL: BatchStarting или SQL: BatchCompleted. Основной сбивающий с толку момент заключается в том, что SQL выводится ПОСЛЕ сообщений об ошибках - что имеет смысл, когда вы думаете об этом, но может быть не интуитивно понятным.

В качестве примера, с запросом SELECT * FROM Table WHERE ID=3 8 (обратите внимание на неправильный пробел между 3 и 8) я получил следующий вывод.

Exception   Error: 102, Severity: 15, State: 1
User Error Message  Incorrect syntax near '8'.
SQL:BatchStarting   SELECT * FROM Table WHERE ID=3 8
SQL:BatchCompleted  SELECT * FROM Table WHERE ID=3 8
1 голос
/ 12 мая 2010

В Profiler попробуйте просмотреть события SP: StmtStarting и SQL: StmtStarting и включите столбец TextData в вывод.

Я думаю, что эти события отображаются только в списке выбора, если на вкладке «Выбор событий» установлен флажок «Показать все события».

...