使用带有存储过程和 SQL Server 2008 SP1 的 Entity Framework 4... 运行 SQL Server Profiler(TSQL_SPs 模板)时,显示我的存储过程调用及其语句的行表明它们在 DatabaseID = 1(Master)中执行,但实际上发生在我的应用程序数据库(ID = 8)中。这些过程正确执行并返回数据,并且它们仅存在于我的应用程序数据库中,那么为什么 Profiler 将这些行标记为在 Master 中?这是 Profiler 中的错误吗?这是 EF4 中的错误吗?
请注意,针对 SQL 2000 实例运行相同的代码,Profiler 可以正确显示应用程序的数据库 ID。
更新:我现在已经在新安装的 SQL Server 2008 R2 上对此进行了测试,它仍然显示此情况,就好像它发生在 Master 中一样。
更新2:这已被记录到 Connect athttps://connect.microsoft.com/SQLServer/feedback/details/572246/profiler-reports-ef4-queries-as-occurring-in-master。
答案1
从中学到了一个解决方法StackOverflow 上的 Olaf Tinnemeyer:改变多个活动结果集连接字符串中的选项错误的导致 Profiler 正确报告在应用程序数据库中执行的查询。
我仍然认为这是 SQL 2008 中的一个错误,但是现在我可以接受这个解决方法。