出现错误,“;SQL语句的某些部分嵌套太深;仅在某些服务器上

本文关键字:嵌套 服务器 些部 SQL 语句 错误 | 更新日期: 2023-09-27 18:00:39

我们将实体框架更新到6.1.3,从那时起,在一些服务器(不幸的是,运行单元测试的服务器)上,我们现在得到了异常:

System.Data.SqlClient.SqlException:SQL语句的某些部分嵌套太深。重写查询或将其分解为更小的查询。

在一些嵌套不那么深的EF查询上。

当我们更改EF版本时,我们进行了其他更改,但这些似乎都没有影响单元测试。使用这些查询的服务根本没有更改。

我在环境中没有发现任何异常情况,我有点不敢相信它会因为EF更新而发生。是否有更多的影响可能导致此异常?

编辑:我刚刚提取了查询,并在一个出现故障的服务器上运行,这很有趣。所以我想一定是EF?

出现错误,“;SQL语句的某些部分嵌套太深;仅在某些服务器上

SQL语句的某些部分嵌套太深。重写查询或将其分解为更小的查询。

此错误消息由SQL Server生成。它表示SQL查询无法进行分析,因为它太复杂了。您使用的实体框架的新版本可能有一个不同的优化器,该优化器将生成比以前更嵌套的SQL查询,这就是为什么现在出现此错误消息的原因。

此错误消息也可能发生在某些版本的SQL Server上。如果您的SQL Server没有相同的版本,它可以解释为什么您只在某些配置上复制它。您可以在这个连接错误中找到有关此行为的更多信息:SQL语句嵌套太深

SQL Server 2012 SP2和SQL Server 2014 SP1 已修复此问题