0

私は最近、入力 XML ファイルを処理し、提供されたデータに基づいて多数のデータベース更新を行う COM+ コンポーネントを使用しています。

EventClass Exception を使用して SQL プロファイラーを実行し、ユーザー エラー メッセージを選択すると、次のように表示されます。

例外エラー: 102、重大度: 15、状態: 1
ユーザー エラー メッセージ '3' 付近の構文が正しくありません。

しかし、COM+ コンポーネントによって提供されている完全な SQL を見たいと思っています。

プロファイラーなどを使用して、SQL Server に送信された SQL ステートメントをインターセプトする方法はありますか?

このマシンは SQL Server 2005 を使用しており、COM+ オブジェクトは Delphi で記述されています。

4

2 に答える 2

1

プロファイラーで、イベント 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 に答える