Можно ли получить сырой SQL, который возвратил ошибку в SQL Server? - PullRequest
0 голосов
/ 03 декабря 2009

У меня есть база данных SQL Server 2005 и классический интерфейс ASP (не спрашивайте). Я пытаюсь отладить некоторые ошибки в файле журнала IIS (код ошибки 80040e14), и я не испытываю особой радости в конце ASP. Возможно ли получить необработанный SQL, вызвавший ошибку, непосредственно из SQL Server, или не удалось настроить SQL Server на запись такого плохого SQL в будущем? Ошибки возникают периодически только несколько раз в неделю, поэтому я не уверен, что Profiler будет инструментом для этой работы.

Ответы [ 3 ]

1 голос
/ 03 декабря 2009

Теоретически для этого предназначен флаг трассировки 3602 - DBCCC TraceOn 3602 - он не идеален, и я не уверен, работает ли он еще в 2005 году, YMMV.

1 голос
/ 03 декабря 2009

Флаг трассировки 3602 + флаг трассировки 3605 должны получать сообщения об ошибках в журнал SQL Server. См. http://support.microsoft.com/kb/199037. Те, которые работают в SQL Server 2005, по моему опыту.

Другим вариантом может быть использование средства профилирования SQL для регистрации события «Сообщение об ошибке пользователя» - это даст вам текст ошибки, но не оператор, вызвавший ошибку. Профилирование события BatchCompleted, в котором столбец Error не равен 0, должно дать вам текст выписки с ошибками. Это должно приблизить вас к ошибке.

1 голос
/ 03 декабря 2009

Если вы используете источник данных ODBC, вы можете использовать вкладку Трассировка на панели управления ODBC, чтобы включить трассировку, которая, если я правильно помню, записывает весь трафик в этот источник данных. Хотя, если вы не сможете надежно заставить ошибку возникать по требованию, вы получите один огромный файл журнала, чтобы пройти через него.

Так что, вероятно, не сильно отличается от записи всего трафика с помощью Profiler.

Если у вас нет прав для запуска профилировщика на сервере.

...