C コードから SQL Server トレース ログを収集できるプログラムを作成する必要があります。これを行うにはいくつかの方法があるようです:
- トレース ファイルがストアド プロシージャを介してテーブルにマップされる、最も一般的なSQL トレースメソッドを使用します。このトレース ログは、SQL/ODBC を使用して収集できます。これに関する問題は、トレース ファイルがローテーションされ、サイズが制限されることです。トレースが収集されている間に、トレース ファイルがスワップされ、すべてのイベントが収集されない可能性があります。第 2 に、これらのストアド プロシージャは将来のバージョンで削除されるため、構築するのは得策ではないようです。
- 推奨される方法は、代わりに拡張イベントを使用することです。これは ETW とファイル ターゲットをサポートしますが、セットアップはサーバー側でより複雑なようであり、すべての SQL Server バージョンがこれをサポートしているわけではないようです。
- SMOもありますが、これは C API を提供しません。
では、SQL Server トレース ログを適切に収集するための推奨される方法は何ですか?