7

我正在使用分析器在 Sql Server 2005 上运行跟踪,需要找出导致报告错误的原因。

我使用了“空白”模板,并选择了以下事件的所有列:

  • 例外
  • 交易所溢出事件
  • 执行警告
  • 哈希警告
  • 缺少列统计信息
  • 缺少连接谓词

我注意到“TextData”列中有许多这样的错误:

  • 错误:156,严重性:16,状态:0
  • 错误:208,严重性:16,状态:0

我查找了错误(语法不正确,对象名称无效),但我如何知道是什么存储过程或查询导致了它们?

4

2 回答 2

10

不用担心 208 错误。208 是“找不到对象”。由于所谓的“延迟名称解析”,Profiler 会选择这些。

采取以下程序。

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

该 proc 可以正常运行而不会出现任何错误,但是,如果您正在运行探查器跟踪,您将看到一两个错误 208 实例。这是因为表 #Temp 在 proc 启动时不存在,即代码被解析和绑定。绑定到底层对象的过程失败。

创建表运行后,其他语句将重新编译并绑定到正确的表并无错误地运行。

您会看到延迟解析错误的唯一地方是探查器。

于 2009-05-03T19:12:10.700 回答
2

在 sql 2005 中你不能。您必须运行 SQL:StmtStarting、SQL:StmtCompleted、用户错误消息和异常事件的分析器跟踪,其中包含您需要了解正在发生的事情的 text、transactionId、EventSequence 和 otehr 列。

于 2009-05-01T20:20:31.817 回答