KB2894305 – ÅTGÄRD: Icke-optimal körningsplan genereras när du kör en fråga i SQL Server 2012 eller SQL Server 2014

Gäller för
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Symptom

När du kör en fråga i Microsoft SQL Server 2012 eller SQL Server 2014, och följande villkor är uppfyllda, genereras en suboptimal körningsplan i SQL Server 2012:

  • Frågan innehåller ett Case-, When-, Then- och Else-uttryck.
  • Instruktionen When har ett konstant villkor som utvärderas till "false".
  • Instruktionen Then innehåller en Select -sats.

Anteckningar

  • I körningsplanen utvärderas och jämförs -instruktionen med isFalseOrNull(0). Instruktionen When utvärderas dock alltid till "false".
  • Det här problemet förekommer inte i Microsoft SQL Server 2008 R2

      

Lösning

Problemet åtgärdades först i följande kumulativa uppdatering av SQL Server.

Kumulativ uppdatering 1 för SQL Server 2014 /en-us/help/2931693

Kumulativ uppdatering 7 för SQL Server 2012 SP1 /en-us/help/2894115

Om kumulativa uppdateringar för SQL Server

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:

      

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".