SQL Server Profilerのトレースを特定のデータベースに限定する方法を教えてください。接続しているインスタンス上のすべてのデータベースのイベントが表示されないようにトレースをフィルタリングする方法がわかりません。
[トレースプロパティ]> [イベント選択]タブ> [すべての列を表示]を選択します。列フィルタの下に、データベース名が表示されます。 Likeセクションにデータベース名を入力すると、そのデータベースのトレースだけが表示されます。
SQL 2005では、最初にトレースにデータベース名列を表示する必要があります。最も簡単な方法は、その列がすでに追加されているTuningテンプレートを選択することです。
フィルタリングするためにチューニングテンプレートが選択されているとします。
トレースは常にテーブルにも保存するので、事後にトレースデータに対してLIKEクエリを実行できます。
実験で私はこれを観察することができました:
SQL Server 2000に常駐するデータベースでSQL Profiler 2005またはSQL Profiler 2000を使用する場合 - 問題の問題は解決しませんが、SQL Server 2005データベースを使用する場合は問題なく機能します。
要約すると、この問題はSQLServer 2000でよく見られ、SQLServer 2005で修正されているようです。
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プロファイラ2000の[新しいトレース]ウィンドウで(DatabaseNameの代わりに)DatabaseIDフィルタを使用します。
[トレース]プロパティで、上部の一般の横にあるイベント選択タブをクリックします。次に、右下にあるColumn Filters ...をクリックします。その後、TextData
やDatabaseName
など、フィルタリング対象を選択できます。
Likeノードを展開して、%
または%MyDatabaseName%
のようにパーセント%TextDataToFilter%
記号でフィルタを入力します。 %%
記号がないと、フィルタは機能しません。
また、チェックボックスを必ずチェックしてください値を含まない行を除外してくださいDatabaseName
のようにフィルタリングしようとしているフィールドが見つからない場合はGeneralタブに行きあなたのTemplateを変更してください、空白のものはすべてのフィールドを含むべきです。
新しいテンプレートを作成してDBnameを確認してください。トレースファイルにそのテンプレートを使用してください。