web-dev-qa-db-ja.com

SQL Server Profiler - 1つのデータベースからのイベントのみを表示するようにトレースをフィルタリングする方法

SQL Server Profilerのトレースを特定のデータベースに限定する方法を教えてください。接続しているインスタンス上のすべてのデータベースのイベントが表示されないようにトレースをフィルタリングする方法がわかりません。

356
G - M

[トレースプロパティ]> [イベント選択]タブ> [すべての列を表示]を選択します。列フィルタの下に、データベース名が表示されます。 Likeセクションにデータベース名を入力すると、そのデータベースのトレースだけが表示されます。

532
Gulzar Nazim

SQL 2005では、最初にトレースにデータベース名列を表示する必要があります。最も簡単な方法は、その列がすでに追加されているTuningテンプレートを選択することです。

フィルタリングするためにチューニングテンプレートが選択されているとします。

  • [イベント選択]タブをクリックします
  • [列フィルタ]ボタンをクリックします
  • [すべての列を表示](右側が下)をオンにします。
  • [DatabaseName]を選択し、右側のペインで[Like]の横のプラス記号をクリックして、データベース名を入力します。

トレースは常にテーブルにも保存するので、事後にトレースデータに対してLIKEクエリを実行できます。

39
Todd Price

実験で私はこれを観察することができました:

SQL Server 2000に常駐するデータベースでSQL Profiler 2005またはSQL Profiler 2000を使用する場合 - 問題の問題は解決しませんが、SQL Server 2005データベースを使用する場合は問題なく機能します。

要約すると、この問題はSQLServer 2000でよく見られ、SQLServer 2005で修正されているようです。

SQLServer 2000を扱うときの問題の解決策は(wearejimboによって説明されるように)です。

  1. 以下のようにsysdatabasesテーブルを照会して、フィルタリングしたいデータベースのDatabaseIDを識別します。

    SELECT * 
    FROM master..sysdatabases 
    WHERE name like '%your_db_name%'   -- Remove this line to see all databases
    ORDER BY dbid
    
  2. SQLプロファイラ2000の[新しいトレース]ウィンドウで(DatabaseNameの代わりに)DatabaseIDフィルタを使用します。

8
Praveen

[トレース]プロパティで、上部の一般の横にあるイベント選択タブをクリックします。次に、右下にあるColumn Filters ...をクリックします。その後、TextDataDatabaseNameなど、フィルタリング対象を選択できます。

Likeノードを展開して、%または%MyDatabaseName%のようにパーセント%TextDataToFilter%記号でフィルタを入力します。 %%記号がないと、フィルタは機能しません。

また、チェックボックスを必ずチェックしてください値を含まない行を除外してくださいDatabaseNameのようにフィルタリングしようとしているフィールドが見つからない場合はGeneralタブに行きあなたのTemplateを変更してください、空白のものはすべてのフィールドを含むべきです。

4
6dev6il6

新しいテンプレートを作成してDBnameを確認してください。トレースファイルにそのテンプレートを使用してください。

1
amy