调试“不正确的语法”异常

时间:2010-05-12 13:53:58

标签: sql-server debugging parsing sql-server-profiler

我最近使用的是处理输入XML文件的COM +组件,并根据提供的数据进行了大量的数据库更新。

运行带有EventClass异常的SQL事件探查器,并选择了用户错误消息,我看到了:

异常错误:102,严重性:15,状态:1
用户错误消息“3”附近的语法不正确。

但是我真的想看到COM +组件提供的完整SQL。

我是否仍然使用Profiler或其他方法拦截发送到SQL Server的SQL语句?

本机使用的是SQL Server 2005,COM +对象是用Delphi编写的。

2 个答案:

答案 0 :(得分:1)

在Profiler中,尝试观察事件SP:StmtStarting和SQL:StmtStarting,并在输出中包含TextData列。

如果您选择“事件选择”选项卡上的“显示所有事件”复选框,我认为这些事件仅显示在选择列表中。

答案 1 :(得分:1)

所需的事件是SQL:BatchStarting或SQL:BatchCompleted。主要的混淆点是SQL在错误消息之后输出 - 这在您考虑它时确实有意义,但可能不直观。

例如,使用查询SELECT * FROM Table WHERE ID=3 8(注意3和8之间的空格不正确),我收到了以下输出。

Exception   Error: 102, Severity: 15, State: 1
User Error Message  Incorrect syntax near '8'.
SQL:BatchStarting   SELECT * FROM Table WHERE ID=3 8
SQL:BatchCompleted  SELECT * FROM Table WHERE ID=3 8