ログアウト例外とデバッグのために、私のado.netベースのアプリケーションからサーバに送信されたSQL文を知りたいと思います。 MS SQL接続プロバイダを扱う汎用DALを使用します。どのSQL文がado.netアプリケーション(MS SQLプロバイダ)からサーバに送信されました
SO検索しながら、私はこのクエリを見つけた:
SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC
参照:彼らはSSMS(SQL内から実行している場合は、このSQLコードは、クエリをキャッチすることができSO
や他の多くをサーバーManagement Studio)
ただし、MS SQL Serverに接続されたAdo.netアプリケーションから送信されたクエリはキャッチできませんatabaseサーバー。
私の質問:彼らはこのコードを使用してAdo.netベースのアプリケーションから送信された場合、私は、クエリをキャッチすることはできませんなぜ
?あなたのDALは抽象のIDbConnectionとのIDbCommandインターフェイスを使用している場合
は(私はSQL profillerで得るもののような)私のアプリケーションから送信された実際のSQLステートメントをキャッチするために、他の方法(SQLコード/ C#コード)
クエリに関係なく実行する方法のキャッシュされたクエリを見つけます。したがって、DMVクエリが実行される前に、クエリがキャッシュされていないか、または削除されている可能性があります。この目的のためにDMVを使用するのではなく、拡張イベントまたはSQLトレース(プロファイラ)を使用するトレースを検討してください。 –
SQLプロファイラはオンラインでの対話が必要です。ロギング用のコードが必要です –
Profiler File - > Export - > Script Trace Definitionメニューから無人サーバー側トレースをプロファイラからスクリプトできます。スクリプトを修正して、希望のファイル名パターン、ファイルサイズ、ロールオーバーなどを指定します。 –