0

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

使用 EventClass 异常运行 SQL Profiler,并选择了用户错误消息,我看到:

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

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

无论如何,我是否可以使用 Profiler 或其他方法来拦截发送到 SQL Server 的 SQL 语句?

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

4

2 回答 2

1

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

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

于 2010-05-12T14:16:25.127 回答
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
于 2010-05-14T10:51:40.940 回答