我使用分析器在Sql Server 2005上运行跟踪,需要找出导致报告错误的原因。
我使用了“空白”模板,并选择了以下事件的所有列:
我在“TextData”列中注意到了一些错误:
我查找了错误(语法错误,对象名称无效),但是如何判断存储过程或查询导致错误?
答案 0 :(得分:8)
不要担心208错误。 208是“未找到对象”。由于所谓的“延迟名称解析”,Profiler会选择这些。
采取以下程序。
CREATE PROCEDURE Demo AS
CREATE TABLE #Temp (ID int)
INSERT INTO #Temp VALUES (1)
SELECT ID FROM #Temp
GO
proc会在没有任何错误的情况下正常运行,但是如果你有一个运行的探查器跟踪,你会看到一个或两个错误实例208.这是因为当启动proc时表#Temp不存在,这是当代码被解析和绑定时。绑定到底层对象的过程失败。
一旦create table运行,其他语句将被重新编译并绑定到正确的表并运行而不会出错。
您将看到延迟解决方案错误的唯一位置在探查器中。
答案 1 :(得分:2)
在sql 2005中你不能。 你必须运行SQL的探查器跟踪:StmtStarting,SQL:StmtCompleted,用户错误消息和带有text,transactionId,EventSequence和otehr列的异常事件,以便了解正在发生的事情。