SQL Server プロファイラー トレースを特定のデータベースに制限するにはどうすればよいですか? 接続先のインスタンスのすべてのデータベースのイベントを表示しないようにトレースをフィルター処理する方法がわかりません。
5 に答える
[トレース プロパティ] > [イベントの選択] タブ > [すべての列を表示] を選択します。列フィルターの下に、データベース名が表示されます。Like セクションにデータベース名を入力すると、そのデータベースのトレースのみが表示されます。
SQL 2005では、最初にトレースに[データベース名]列を表示する必要があります。最も簡単な方法は、その列がすでに追加されているチューニングテンプレートを選択することです。
チューニングテンプレートが選択されていると仮定して、フィルタリングするには:
- [イベントの選択]タブをクリックします
- 「列フィルター」ボタンをクリックします
- [すべての列を表示する(右側を下にする)]をオンにします
- 「データベース名」を選択し、右側のペインの「いいね」の横にあるプラス記号をクリックして、データベース名を入力します。
トレースは常にテーブルにも保存するので、事後にトレースデータに対してLIKEクエリを実行できます。
実験によって、私はこれを観察することができました:
SQL Profiler2005またはSQLProfiler2000をSQLServer2000にあるデータベースで使用すると、前述の問題は解決しませんが、SQL Profiler2005をSQLServer2005データベースで使用すると、完全に機能します。
要約すると、この問題はSQLServer 2000で蔓延しており、SQLServer2005で修正されているようです。
SQLServer 2000を処理する際の問題の解決策は、(wearejimboによって説明されているように)です。
以下のようにsysdatabasesテーブルにクエリを実行して、フィルタリングするデータベースのDatabaseIDを特定します。
SELECT * FROM master..sysdatabases WHERE name like '%your_db_name%' -- Remove this line to see all databases ORDER BY dbid
SQL Profiler 2000の[新しいトレース]ウィンドウで(DatabaseNameの代わりに)DatabaseIDフィルターを使用します
[トレース] プロパティで、上部の [一般] の横にある [イベントの選択] タブをクリックします。次に、右下の列フィルター...をクリックします。次に、またはなど、フィルタリングする対象を選択できます。TextData
DatabaseName
Likeノードを展開し、またはの%
ようなパーセント記号を使用してフィルターを入力します。標識がなければ、フィルターは機能しません。%MyDatabaseName%
%TextDataToFilter%
%%
また、 [値を含まない行を除外する]チェックボックスを必ずオンにしてください。[一般] タブDatabaseName
に移動してテンプレートを変更するなど、フィルタリングするフィールドが見つからない場合は、空白のフィールドにすべてのフィールドが含まれている必要があります。
新しいテンプレートを作成し、DBnameを確認します。トレースファイルにそのテンプレートを使用します。