これはプロファイラーまたは Entity Framework のバグですか?

これはプロファイラーまたは Entity Framework のバグですか?

Entity Framework 4 をストアド プロシージャと SQL Server 2008 SP1 とともに使用しています... SQL Server Profiler (TSQL_SPs テンプレート) を実行すると、ストアド プロシージャの呼び出しとそのステートメントを示す行には、DatabaseID = 1 (Master) で実行されたと表示されますが、実際にはアプリケーション データベース (ID = 8) で実行されています。プロシージャは適切に実行され、データを返し、アプリケーション データベースにのみ存在するのに、なぜ Profiler はこれらの行を Master にあるとマークするのでしょうか。これは Profiler のバグでしょうか。EF4 のバグでしょうか。

同じコードを SQL 2000 インスタンスに対して実行すると、プロファイラーはアプリケーションのデータベース ID を正しく表示することに注意してください。

アップデート: SQL Server 2008 R2 の新規インストールでこれをテストしましたが、マスターで発生したかのように表示されます。

アップデート2: これはConnectに記録されましたhttps://connect.microsoft.com/SQLServer/feedback/details/572246/profiler-reports-ef4-queries-as-occurring-in-master

答え1

回避策を学んだStackOverflow の Olaf Tinnemeyer: 変更する複数のアクティブ結果セット接続文字列のオプションで間違いプロファイラーは、クエリがアプリケーション データベースで実行されていると適切に報告します。

これはまだ SQL 2008 のバグだと思っていますが、今のところは回避策で我慢できます。

関連情報