КОРЕКЦИЯ: Рядка възможност за неправилни резултати, когато използвате Option(Recompile) за заявки вътре в процедура в SQL Server 2014 или SQL Server 2012

Отнася се за
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

Симптоми

Имайте предвид сценария, описан по-долу:

  • Изпълнявате процедура в Microsoft SQL Server 2014 или SQL Server 2012.

  • Процедурата съдържа заявката има следните условия:

    • Тя съединява таблица, която се актуализира много често.
    • Има клауза WHERE, която съдържа параметри.
    • Използва Option(Recompile).
  • Тази процедура се изпълнява за множество едновременни връзки, които имат различни набори от стойности на параметри.

  • Вашият сървър е подложен на голямо натоварване, което кара всяка от тези процедури да отнема повече време от обичайното.

В този случай може да получите неправилни резултати от процедурата, която се изпълнява за вашата връзка, ако следните допълнителни условия са изпълнени по време на интервала от време, който настъпва между края на съставянето на заявката и началото на изпълнението на заявката във вашата връзка:

  • Условие 1: Друга едновременна връзка прави актуализации на присъединената таблица, които са достатъчно големи, за да задействат друго повторно съставяне на заявката за вашата връзка.
  • Условие 2: Същата заявка е компилирана отново от друга връзка и след това е поставена в кеша.

Важно: Този проблем с времето е изключително рядък.

Причина

Този проблем възниква, защото стойностите на параметрите за заявката се променят в неправилни, след като изпълните заявката за вашата връзка. Това се дължи на изключително рядък проблем с времето, който съществува между едновременните компилации.

Решение

Проблемът е коригиран за първи път в следващата кумулативна актуализация на SQL Server.

Сборна актуализация 4 за SQL Server 2014 г. /en-us/help/2999197

Сборна актуализация 2 за SQL Server 2012 SP2 /en-us/help/2983175

Сборна актуализация 11 за SQL Server 2012 SP1 /en-us/help/2975396

За кумулативните актуализации за SQL Server

Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Прегледайте последните кумулативни актуализации за SQL Server:

      

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.