Как найти причины ошибок, о которых сообщается в трассировке профилировщика SQL Server? - PullRequest
6 голосов
/ 01 мая 2009

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

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

  • Исключение
  • Событие разлива биржи
  • Предупреждения о выполнении
  • Hash Warnings
  • Статистика отсутствующих столбцов
  • Отсутствует предикат соединения

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

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

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

Ответы [ 2 ]

8 голосов
/ 03 мая 2009

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

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

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

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

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

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

2 голосов
/ 02 мая 2009

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

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