【问题标题】:How to get the execution plan using LINQ to SQL/ADO.NET如何使用 LINQ to SQL/ADO.NET 获取执行计划
【发布时间】:2011-05-12 14:03:00
【问题描述】:

是否可以通过编程方式获取 LINQ to SQL 或 ADO.NET 查询的执行计划,以便在调试信息中显示?如果有,怎么做?

【问题讨论】:

  • 我不具体了解 LINQ,但这里有一个以编程方式获取查询计划的解决方案。要对 LINQ 执行相同的操作,您似乎必须大量修改生成的文件。应该是可行的,复杂的,但可行的。 social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/…
  • 你做到了吗?如果您可以在某个时候重新发布,我很想看看解决方案。

标签: c# .net sql linq-to-sql sql-execution-plan


【解决方案1】:

当然,您需要做两件事。

DbConnectionDbCommandDbDataReader 的自定义实现。您可以使用它来拦截发送到数据库的所有 SQL。你基本上设置了它,所以你有一个记录所有运行的 SQL 的层。 (我们计划在接下来的几个月内开源这方面的一些东西,敬请期待)

一种显示数据意义的方法,这里恰好是开源的:https://data.stackexchange.com/stackoverflow/s/345/how-unsung-am-i(请参阅包含执行计划选项)


另一种方法是通过查看 proc 缓存进行事后诊断。 sys.dm_exec_query_stats 包含可以扩展的缓存计划句柄。

【讨论】:

猜你喜欢
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 2021-01-18
  • 2010-10-11
  • 1970-01-01
  • 2010-09-27
  • 2011-11-13
相关资源
最近更新 更多