如何使用LINQ to SQL/ADO.NET获取执行计划

Cha*_*ran 10 .net c# sql linq-to-sql sql-execution-plan

是否有可能以编程方式获取LINQ to SQL或ADO.NET Query的执行计划以显示调试信息?如果是这样,怎么样?

Sam*_*ron 4

当然,您需要两件事。

DbConnection,DbCommand和的自定义实现DbDataReader。您可以使用它来拦截发送到数据库的所有 SQL。您基本上对其进行了设置,以便有一个记录所有运行的 SQL 的层。(我们计划在未来几个月内开源该领域的一些东西,敬请期待)

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


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