SQL Serverプロファイラー-トレースをフィルターして1つのデータベースのイベントのみを表示する方法


381

SQL Serverプロファイラーのトレースを特定のデータベースに制限するにはどうすればよいですか?接続するインスタンスのすべてのデータベースのイベントを表示しないようにトレースをフィルターする方法がわかりません。

回答:


574

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


8
これが一般的な問題かどうかはわかりませんが、プロファイラーを実行すると、トレースする値の多くでデータベース名が空白になります。DatabaseID列を使用して、masterデータベースのsysdatabasesテーブルにクエリを実行して、入力する正しい値を見つける必要があります
Jim Birchall

34
DatabaseIDを見つけるには:SELECT [name]、[dbid] FROM [master]。[dbo]。[sysdatabases] ORDER BY [name]
Simon

1
選択したテンプレートがある場合は、それも依存します。+1
12

2
そして、あなたはそれbeforeをトレースから始めなければなりません。後で実行すると、フィールドは編集できなくなります!
DarkWalker

2
トレースを停止するか、実行する前に開始することを忘れないでください。
Fery

42

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

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

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

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


8

実験により、これを観察することができました。

SQL Server 2000にあるデータベースでSQLプロファイラー2005またはSQLプロファイラー2000を使用すると、問題は解決しませんが、SQL Server 2005データベースでSQLプロファイラー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の[新規トレース]ウィンドウで(データベース名の代わりに)データベースIDフィルタを使用する


4

トレースプロパティで、上部の横にある[ イベントの選択 ]タブをクリックします。全般。次に、右下の[ 列フィルター... ]をクリックします。次に、TextDataまたはなど、フィルタリングするものを選択できます。DatabaseName

拡大する Like」ノードを展開し、またはの%ようなパーセント記号を使用してフィルターを入力します。なし%MyDatabaseName%%TextDataToFilter%%%サインフィルタは機能しません。

また、[値を含まない行を除外する]チェックボックスを必ずオンにしてください。[ 全般 ]タブにDatabaseName移動して変更するなど、フィルタリングするフィールドが見つからない場合は、テンプレート、空白のフィールドにすべてのフィールドを含める必要があります。


1

新しいテンプレートを作成し、DBnameを確認します。そのテンプレートをトレースファイルに使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.