得到错误,"SQL语句的某些部分嵌套太深"仅在某些服务器上

Mat*_*ler 3 c# linq sql-server entity-framework

我们将实体框架更新到6.1.3,从那以后在一些服务器上(遗憾的是那些运行单元测试的服务器),我们现在得到例外:

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

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

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

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

编辑:我刚刚提取了查询并在其中一个失败的服务器上运行,这很有趣.所以我想它必须是EF?

Cyr*_*and 5

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

此错误消息由SQL Server生成.它表示无法分析SQL查询,因为它太复杂.您使用的新版本的Entity Framework可能有一个不同的优化器,它将生成比以前更多的嵌套SQL查询,这就是您现在收到此错误消息的原因.

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

SQL Server 2012 SP2SQL Server 2014 SP1已修复此问题