Microsoft разпространява корекции за Microsoft SQL Server 2012 в един файл за изтегляне. Тъй като корекциите са кумулативни, всяка нова версия съдържа всички горещи поправки и всички актуализации на защитата, които са били включени в предишната SQL Server 2012 актуализация.
Симптоми
Обмислете следния сценарий:
-
Създавате съхранена процедура, която използва параметър с таблични стойности (TVP) в Microsoft SQL Server 2012.
-
Можете да използвате SQL Profiler или SQL Server разширени събития, за да заснемете RPC:Starting и RPC:Completed събития.
-
Изпълнявате заявка, която използва TVP.
-
Времето на изчакване на заявката изтече.
В този случай възниква грешка без получаване планиране и заявки, които се изпълняват на един и същ планировчик се изпълнява бавно. Освен това се генерира мини-вторично копие файл в SQL Server регистрационната папка.Когато възникне този проблем, получавате съобщение за грешка, подобно на следното:
System.Data.SqlClient.SqlException (0x80131904): Времето на изчакване изтече. Периодът на изчакване, изтекъл преди завършването на операцията или сървърът не отговаря.в System.Data.SqlClient.SqlInternalConnection.OnError(изключение sqlException, булев breakConnection)в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()в System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 грешка)в System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()at System.Data.SqlClient.TdsParserStateObject.ReadByte()at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Метод на низ, резултат DbAsyncResult)в System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(резултат DbAsyncResult, Име на низ, Булев sendToPipe)at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()at TVPApp.Program.Main(String[] args)
Грешката на неизходящ планировчик заедно със съобщение за грешка, подобно на следното, се записва в регистрационния файл на SQL Server грешка:
<date><Time> Server Using 'dbghelp.dll' version '4.0.5'<Date><Time> Server ***Unable to get thread context for spid #<Date><Time> Server * *******************************************************************************><2 Дата><час> Server *><6 дата><час> сървър * BEGIN STACK DUMP:><0 дата><> сървър * <дата><> час spid #><8 дата><час> сървър *><2 Дата><час> сървър * Неподостъпен планиране><6 дата><час> сървър *<дата><час> сървър * *******************************************************************************< дата><час> подпис на стека на сървъра за вторичното копие е 0x000000000000002C<дата><час> server код за връщане на външно вторично копие 0x20000001.Процесът на външно вторично копие не върна грешки.<дата><час> процес на сървър 0:0:0 (0x1670) работните 0x0000000004EDE160 изглежда да не дават в Scheduler 5. Време за създаване на нишка: 13014210386757. Използва се процесор приблизително нишка: ядро 0 ms, потребител 70106 мсек. Използване на процесите 16%. Неактивен режим на системата 77%. Интервал: 70140 мсек.<дата><час> процес на сървър 0:0:0 (0x1670) работните 0x0000000004EDE160 изглежда да не дават в Scheduler 5. Време за създаване на нишка:
Причина
Този проблем възниква поради грешка в ядрото на базата данни на SQL Server 2012. Текстовите колони в ТВ програмата се реализират като низове за вмъкване или буфери, а увеличаването на броя на редовете увеличава броя на буферите. Обаче процесът, който освобождава буферите, отнема много време. Следователно се генерира непостъпима грешка в планирането, когато възникнат операции за освобождаване и свиване. Забележка: Подобен проблем е обърнато внимание в следната статия в базата знания на Microsoft. Обаче сборния пакет за актуализация, описан в статията не е за заявка изчакване проблем.
2520808 КОРЕКЦИЯ: Непостъпително планиране грешка, когато изпълнявате заявка, която използва TVP в SQL Server 2008 или SQL Server 2008 R2, ако се използва SQL Profiler или SQL Server разширени събития
Решение
Информация за кумулативна актуализация
Кумулативен пакет за актуализация 5 за SQL Server 2012 Service Pack 1 (SP1)
Корекцията за този проблем първо е издадена в кумулативна актуализация 5. За повече информация как да получите този сборен пакет за SQL Server 2012 щракнете върху следния номер на статия в базата знания на Microsoft:
2861107 Кумулативен пакет за актуализация 5 за SQL Server 2012Note Тъй като компилациите са кумулативни, всяка нова корекция версия съдържа всички горещи поправки и всички корекции на защитата, които са включени в предишната SQL Server 2012 корекция издание. Препоръчваме да помислите за прилагането на най-новата корекция версия, която съдържа тази актуална корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:
2772858 Компилациите на SQL Server 2012, които са издадени след издаването на SQL Server 2012 Service Pack 1
Заобиколно решение
За да решите проблема по заобиколен начин, използвайте един от следните методи:
-
Не използвайте SQL Profiler или SQL Server разширени събития.
-
Щракнете, за да изчистите квадратчетата за отметка RPC:Starting и RPC:Completed в дефиницията на проследяването.
Статут
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са изброени в раздела "Отнася се за".