4

ここで何が欠けていますか?SQL Server Profilerに表示されるクエリはすべて、マスターデータベースを対象としているため、データベース名でフィルタリングするのは困難です。データベース名でフィルタリングできるように、どのイベントを監視する必要がありますか。

より大きな問題は、ここで正確に何が起こっているのかということです。

4

6 に答える 6

6

この'MultipleActiveResultSets=True'をEntityFramework接続から削除する必要があります

ストリング

その後、マスターではなく、プロファイラーにターゲットデータベース名が表示されます。

私のオプションでは、おそらくADO.NETチームはMultipleActiveResultSets機能を使用して取得したいと考えています

DBからのデータなので、マスターにアクセスする必要があります。

MultipleActiveResultSetsは、1つのクエリを発生させ、そのすべての結果を返さない(LINQのforeachステートメントのように)と同時に、別のクエリを発生させて同じセッションで別のデータを取得します。

デフォルトでは、この動作はDBでは許可されていません。それで.....

于 2012-11-27T03:58:54.627 に答える
5

接続文字列にアプリケーション名を追加することでMARSをアクティブのままにするなど、この問題を回避することができました。

Data Source=database_server;Initial Catalog=MyDatabase;Trusted Connection=true;MultipleActiveResultSets=True;Application Name=MyDatabase;

次に、アプリケーション名でフィルタリングできます。

于 2012-06-14T15:57:15.600 に答える
2

これがSQLServer2008 R2の場合は、トレースプロパティの[イベントの選択]タブで、[すべての列を表示する]をオンにします。これで、DatabaseNameに基づいて列フィルターを作成できるようになります。

これらの変更を行うには、トレースを一時停止または停止する必要があると思います。

于 2011-03-22T22:05:07.540 に答える
2

K Ivanovが指摘したように、MARS(MultipleActiveResultSets)を有効にすると、SQLプロファイラーのマスターとしてDatabaseNameが表示されます。これをfalseに設定すると、適切なDatabaseNameが表示されますが、MultipleActiveResultsを使用できなくなります。

于 2011-08-12T17:47:07.233 に答える
1

何らかの理由で、SP:CacheHitイベントを選択すると、正しいデータベースに対するクエリが表示されるようになり、それでフィルタリングできるようになりました。そのイベントは正確には何ですか?

于 2011-03-23T13:03:10.733 に答える
1

LoginNameまたはHostNameを使用してプロファイラーでフィルタリングできます

于 2011-03-22T21:25:51.280 に答える