SQL: Erreur, l'Expression de services limite atteinte?

"Erreur interne: Une expression de services de limite a été atteinte. S'il vous plaît regardez pour potentiellement les expressions complexes dans votre requête, et d'essayer de les simplifier."

Quelqu'un a vu ça avant, et a trouvé une bonne solution de contournement?

J'ai réussi à contourner ce problème en divisant ma requête SQL en deux parties et surtout, l'écriture de la première requête SQL de type select à une table temp et la deuxième partie, une nouvelle instruction SQL select sélectionne à partir de la table temporaire et utilise beaucoup de CROIX APPLIQUER l'opérateur de Calculer en cascade des colonnes calculées.

Ceci est un exemple de la façon dont la deuxième partie ressemble, mais je suis en utilisant beaucoup de la Croix Applys pour produire de nouvelles colonnes qui sont des calculs:

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

Mon but de mettre ceci dans un rapport sql et il fonctionne bien si il y a 1 utilisateur uniquement dans le #tempTable aurez créés et supprimés dans la même exécution et les résultats sont affichés dans le rapport correctement. Mais à l'avenir, si il y a d'utilisateurs simultanés, je suis préoccupé par le fait qu'ils seront en écrivant à la même #tempTable qui aura une incidence sur les résultats?

J'ai cherché à mettre en procédures stockées, mais toujours le message d'erreur ci-dessus.

Je rêve d'un monde où nous n'avons pas à totalement refactoriser le code pour l'adapter à un obscur, archaïque limite. Si vous partagez ce rêve, s'il vous plaît voter mon Connecter commentaires: connect.microsoft.com/SQLServer/feedback/details/789949/...

OriginalL'auteur Standage | 2011-12-20