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

发布于 2024-11-06 09:11:38 字数 68 浏览 0 评论 0原文

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

Is it possible to get the execution plan of a LINQ to SQL or ADO.NET Query programatically for displaying in debug information? If so, how?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

养猫人 2024-11-13 09:11:38

当然,您需要两件事。

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

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


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

Sure, there are 2 things you will need.

A custom implementation of DbConnection, DbCommand and DbDataReader. You can use that to intercept all the SQL sent to the DB. You basically set it up so you have a layer that logs all the SQL that is run. (we plan to open source something in this area in the next few months, so stay tuned)

A way to display an make sense of the data, which happens to be open source here: https://data.stackexchange.com/stackoverflow/s/345/how-unsung-am-i (see the include execution plan option)


Another approach is to do the diagnostics after the fact by looking at the proc cache. sys.dm_exec_query_stats contains cached plan handles which you can expand.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文