代码之家  ›  专栏  ›  技术社区  ›  MattH

调试“语法错误”异常

  •  0
  • MattH  · 技术社区  · 15 年前

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

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

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

    不过,我真的希望看到由COM+组件提供的完整SQL。

    我是否仍在使用探查器或其他工具来截取发送到SQL Server的SQL语句?

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

    2 回复  |  直到 15 年前
        1
  •  1
  •   user121301    15 年前

    在profiler中,尝试观察事件sp:stmtstarting和sql:stmtstarting,并在输出中包含列textdata。

    我认为只有在事件选择选项卡上选择“显示所有事件”复选框时,这些事件才会显示在选择列表中。

        2
  •  1
  •   MattH    15 年前

    需要的事件是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