如何查找导致SQL Server探查器跟踪中报告的错误的原因?

KM.*_*KM. 6 sql-server profiler sql-server-2005

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

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

  • 例外
  • 交换溢油事件
  • 执行警告
  • 哈希警告
  • 缺少列统计信息
  • 缺少加入谓词

我在"TextData"列中注意到了一些错误:

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

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

Gil*_*ter 8

不要担心208错误.208是"未找到对象".由于所谓的"延迟名称解析",Profiler会选择这些.

请执行以下步骤.

CREATE PROCEDURE Demo AS
  CREATE TABLE #Temp (ID int)
  INSERT INTO #Temp VALUES (1)
  SELECT ID FROM #Temp
GO
Run Code Online (Sandbox Code Playgroud)

那个proc会运行正常而没有任何错误,但是,如果你有一个运行的探查器跟踪,你会看到一个或两个错误208的实例.这是因为当启动proc时表#Temp不存在,这就是代码被解析和绑定.绑定到底层对象的过程失败.

一旦create table运行,其他语句将被重新编译并绑定到正确的表并运行而不会出错.

您将看到延迟解决方案错误的唯一位置在分析器中.