实体框架和SQL Server调优顾问

Max*_*Max 20 sql-server entity-framework

如何使用SQL Server Tuning Advisor根据实体框架查询生成建议?实体框架使用sp_executesql'query'而不是执行查询,而Tuning Advisor无法识别这些查询.我可以手动获取查询文本,但这只适用于非常简单的风格.我该如何自动完成?

UPDATE

如果我将分析信息保存到表中,然后运行一些将剥离"sp_executesql"并仅保留查询文本并使用此新数据运行Tuning Advisor的应用程序,这会有帮助吗?

J4N*_*J4N 6

我知道这个话题有点冷.但由于我遇到了同样的问题并找到了更好的解决方案:

更改捕获的事件是一种方法,但是已经有一个"模板",它记录了SQL服务器调优顾问所需的所有内容.

如果您选择模板"调整",它将有效地删除并添加Doug引用的事件捕获,但另一个也是.

您可以在此处找到有关模板的更多信

要激活此模板,请在"新建跟踪"窗口中选择相应的模板(我没有创建它,它已经存在): 新的跟踪属性

完成后,您可以检查事件选择,您已经拥有了所需的内容: 跟踪事件选择

我另外禁用了RPCCompleted,因为我没有存储过程

我希望它会帮助一些人;)


Jef*_*ger 5

看起来问题就是这个.如果使用"调优"模板中的SQL事件探查器创建跟踪,则它不包含正确的事件.数据库引擎优化顾问不理解sp_executsql批处理已完成事件的语句.它在调整日志中报告"事件不引用任何表",类别ID为"S008".

捕获跟踪时,您还需要在TSQL部分下添加"SQL:StmtCompleted"事件.


Sam*_*eff 0

使用 SQL Profiler 捕获整个查询会话。完成后,您可以保存分析器结果并通过 SQL Server Tuning Advisor 运行整个过程。根据我的经验,这比基于单个查询进行调整提供了更好的结果,并且在许多方面更容易、更现实,因为您可以使用探查器从实际应用程序使用情况中捕获查询。

编辑:

感谢您对您所询问的具体问题给予更多关注。我没有意识到您是在说 Tuning Advisor 不理解,sp_executesql因为这根本不是事实。您可以根据需要运行任意数量的查询sp_executesql并将它们捕获到配置文件中,然后通过 Tuning Advisor 运行该配置文件,它将为您提供建议。

可以肯定的是,我只是使用 MS SQL Server 2008 R2 完成的。我创建了一个没有索引的表,通过 运行了一堆查询sp_executesql,在 SQL Profiler 中捕获它们,然后通过 Tuning Advisor 运行生成的跟踪。Tuning Advisor 为 中嵌入的查询提供了适当的建议sp_executesql

数据库引擎优化顾问的确切版本是 10.50.1600.1,针对 Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) 2011 年 4 月 22 日 19:23:43 版权所有 (c) Microsoft Corporation Developer Edition(64 位) )在 Windows NT 6.1(内部版本 7601:Service Pack 1)上。