"Error interno: se ha alcanzado un límite de servicios de expresión. Busque expresiones potencialmente complejas en su consulta e intente simplificarlas".SQL: Error, ¿se alcanzó el límite de servicios de expresión?
¿Alguien ha visto esto antes y ha encontrado una buena solución?
Me las arreglé para solucionar este problema dividiendo mi consulta SQL en dos partes esencialmente y escribiendo la primera consulta de selección SQL en una tabla temporal y la segunda parte, una nueva declaración SQL selecta de la tabla temporal y usa una gran cantidad de El operador CROSS APPLY calcula cascadas columnas calculadas.
Este es un ejemplo de cómo la parte segundo aspecto, sino que estoy usando mucho más applys Cruz para producir nuevas columnas que son cálculos:
Select * from #tempTable
cross apply
(
select HmmLowestSalePrice =
round(((OurSellingPrice + 1.5)/0.95) - (CompetitorsLowestSalePrice) + 0.08, 2)
) as HmmLowestSalePrice
cross apply
(
select checkLowestSP =
case
when adjust = 'No Room' then 'No Room'
when OrginalTestSalePrice >= CompetitorsLowestSalePrice then 'Minus'
when OrginalTeslSalePrice < CompetitorsLowestSalePrice then 'Ok'
end
) as checkLowestSP
cross apply
(
select AdjustFinalNewTestSP =
case
when FinalNewTestShipping < 0 Then NewTestSalePrice - (FinalNewTestShipping)
when FinalNewTestShipping >= 0 Then NewTestSalePrice
end
) as AdjustFinalNewTestSP
cross apply
(
select CheckFinalSalePriceWithWP =
case
when round(NewAdminSalePrice, 2) >= round(wholePrice, 2) then 'Ok'
when round(NewAdminSalePrice, 2) < round(wholePrice, 2) then 'Check'
end
) as CheckFinalPriceWithWP
DROP TABLE #tempTable
Mi objetivo a poner esto en un informe de SQL y se funciona bien si solo hay 1 usuario, ya que el #tempTable
se creará y se eliminará en la misma ejecución y los resultados se mostrarán correctamente en el informe. Pero en el futuro, si hay usuarios concurrentes, me preocupa que escriban al mismo #tempTable
, lo que afectará los resultados.
He tratado de poner esto en procedimientos almacenados, pero aún aparece el mensaje de error anterior.
Sueño con un mundo donde no tenemos que refactorizar nuestro código totalmente para adaptarse a un límite oscuro, arcaico. Si comparte ese sueño, vote mis comentarios de Connect: https://connect.microsoft.com/SQLServer/feedback/details/789949/sql-increase-expression-services-limit-for-complex-nested-in-lauses –