设置SHOWPLAN_ALL它从何而来

本文关键字:SHOWPLAN ALL 设置 | 更新日期: 2023-09-27 17:56:30

我们有一个使用 SQL Server 2014 作为数据存储的 C# Web 服务。我们大多数地方都使用 LINQ,但也有一些原始 SQL。

最近,我们

开始在数据库端记录SQL语句,我们注意到许多"SET SHOWPLAN_ALL"与实际查询属于同一批次。这会产生很多SQL错误,因为我们的数据库用户无权执行"SET SHOWPLAN_ALL"。

有谁知道为什么我们会将"SET SHOWPLAN_ALL"作为 SQL 批处理的一部分?它是 LINQ 生成的东西吗?可能是我们的新遗物APM代理注入的东西来监视SQL查询吗?

谢谢。

设置SHOWPLAN_ALL它从何而来

答案是,当查询时间超过 500 毫秒时,New Relic APM 代理会执行此操作。

SET SHOWPLAN_ALL

它使 SQL Server 不执行 T-SQL,而是返回有关语句执行的详细信息。您可以在此处找到更多详细信息,包括如何调用它的示例。

这很可能已经遗留在批处理中,因为它已针对性能进行了优化。据我所知,要"关闭"该批次,需要分析该批次并从该批次中删除该语句。