Как узнать, что вызвало ошибки, указанные в трассировке профилировщика SQL Server?

StackOverflow https://stackoverflow.com/questions/812522

Вопрос

Я запускал трассировку на Sql Server 2005 с помощью профилировщика, и мне нужно было выяснить, что является причиной сообщаемых ошибок.

Я использовал «пустой» шаблон и выбрал все столбцы следующих событий:

  • Исключение
  • Событие разлива биржи
  • Предупреждения выполнения
  • Хэш-предупреждения
  • Отсутствует статистика столбца
  • Отсутствует предикат соединения

Я заметил ряд таких ошибок в столбце «TextData»:

  • Ошибка:156, Серьезность:16, Состояние:0
  • Ошибка:208, Серьезность:16, Состояние:0

Я просмотрел ошибки (неверный синтаксис, недопустимое имя объекта), но как определить, какая хранимая процедура или запрос их вызывает?

Это было полезно?

Решение

Не беспокойтесь об ошибках 208.208 — «Объект не найден».Профилировщик улавливает их благодаря так называемому «отложенному разрешению имен».

Выполните следующую процедуру.

CREATE PROCEDURE Demo AS
  CREATE TABLE #Temp (ID int)
  INSERT INTO #Temp VALUES (1)
  SELECT ID FROM #Temp
GO

Этот процесс будет работать нормально, без каких-либо ошибок, однако, если у вас запущена трассировка профилировщика, вы увидите один или два экземпляра ошибки 208.Это потому, что таблица #Temp не существует при запуске процесса, то есть при анализе и связывании кода.Процесс привязки к базовым объектам завершается сбоем.

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

Единственное место, где вы увидите эту ошибку отложенного разрешения, — это профилировщик.

Другие советы

в sql 2005 нельзя.вам придется запустить трассировку профилировщика событий SQL:StmtStarting, SQL:StmtCompleted, User Error Message и Exception с текстом, идентификатором транзакции, EventSequence и другими столбцами, которые вам нужны, чтобы получить представление о том, что происходит.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top