LØSNING: Sjelden mulighet for feil resultater når du bruker Tilvalg(kompiler på nytt) for spørringer i en prosedyre i SQL Server 2014 eller SQL Server 2012

Gjelder for
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Business Intelligence SQL Server 2012 Analysis Services SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Symptomer

Tenk deg følgende:

  • Du kjører en prosedyre i Microsoft SQL Server 2014 eller SQL Server 2012.

  • Prosedyren inneholder en spørring som har følgende betingelser:

    • Den føyer seg inn i en tabell som oppdateres veldig ofte.
    • Den har en WHERE-setning som inneholder parametere.
    • Den bruker Option(Recompile).
  • Denne prosedyren kjøres på flere samtidige tilkoblinger som har ulike sett med parameterverdier.

  • Serveren er under en tung belastning som gjør at hver av disse prosedyrene tar lengre tid enn vanlig.

I dette scenarioet kan du få feil resultater fra prosedyren som kjøres på tilkoblingen hvis følgende tilleggsbetingelser er oppfylt i tidsintervallet mellom slutten av spørringskompileringen og starten av kjøringen av spørringen på tilkoblingen:

  • Betingelse 1: En annen samtidig tilkobling gjør oppdateringer i den sammenføyde tabellen som er store nok til å utløse en ny kompilering av spørringen på tilkoblingen.
  • Betingelse 2: Den samme spørringen ble kompilert på nytt fra en annen tilkobling og deretter satt i hurtigbufferen.

Viktig Dette tidsberegningsproblemet er ekstremt sjeldent.

Årsak

Dette problemet oppstår fordi parameterverdiene for spørringen endres til uriktige verdier etter at du kjører spørringen på tilkoblingen. Dette skjer på grunn av et ekstremt sjeldent tidsberegningsproblem som finnes mellom samtidige samlinger.

Oppløsning

Problemet ble først løst i den følgende kumulative oppdateringen av SQL Server.

Kumulativ oppdatering 4 for SQL Server 2014 /en-us/help/2999197

Kumulativ oppdatering 2 for SQL Server 2012 SP2 /en-us/help/2983175

Kumulativ oppdatering 11 for SQL Server 2012 SP1 /en-us/help/2975396

Om kumulative oppdateringer for SQL Server

Hver nye kumulative oppdatering for SQL Server inneholder alle hurtigreparasjoner og alle sikkerhetsrettinger som fulgte med den forrige kumulative oppdateringen. Ta en titt på de nyeste kumulative oppdateringene for SQL Server:

      

Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen «Gjelder for».