Симптоми
Когато се опитате да изпълните няколко големи заявки едновременно в Microsoft SQL Server 2014, някои заявки може да изчакат RESOURCE_SEMAPHORE_QUERY_COMPILE. Само една заявка, която изисква повече памет от големия праг на шлюз (предоставен от резултата от командата DBCC MEMORYSTATUS), за компилиране, може да продължи дори ако сървърът има достатъчно налична памет.
Забележка: Това е очаквано поведение. Обаче в големи партидни системи, като например склад за данни, това може да понижи производителността при едновременно изпълнение на много заявки.
Решение
Информацията за кумулативната актуализация
Проблемът е коригиран за първи път в следващата кумулативна актуализация на SQL Server.
Препоръка: Инсталирайте най-новата кумулативна актуализация за SQL Server
Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Препоръчваме ви да изтеглите и инсталирате най-новите сборни актуализации за SQL Server:
- Последна кумулативна актуализация за SQL Server 2014 SP1
- Последна сборна актуализация за SQL Server 2014
Тази гореща поправка въвежда нов флаг за проследяване -T 6498. Този флаг за проследяване позволява на повече от една голяма компилация на заявки да получат достъп до големия шлюз, когато има достатъчно свободна памет. Той се базира на 80 процента целева памет на SQL Server и позволява една голяма компилация на заявки на 25 гигабайта (ГБ) памет. Това например позволява две големи компилации от заявки на компютър с целева памет с 64 ГБ.
След като приложите тази гореща корекция, трябва да разрешите проследяване на флаг -T 6498, за да разрешите новото поведение.
Забележка: Ако разрешите флага за проследяване с помощта на командата DBCC TRACEON, не е необходимо да рестартирате сървъра, за да влезе в сила флагът за проследяване. Но може да минат 10 секунди, за да се приложи новата конфигурация на голям шлюз.
Microsoft предлага поддържана гореща корекция. Тази гореща корекция обаче има за цел да коригира само проблема, който е описан в тази статия. Прилагайте тази гореща корекция само към системи, които срещат този конкретен проблем.
Ако горещата корекция е налична за изтегляне, има раздел "Възможно е изтегляне на гореща поправка" в горната част на тази статия от базата знания. Ако този раздел не се появява, подайте заявка до отдела за обслужване на клиенти и поддръжка на Microsoft, за да получите горещата корекция.
Забележка: Ако възникнат допълнителни проблеми или ако е необходимо отстраняване на неизправности, може да се наложи да създадете отделно искане за обслужване. Стандартните такси за поддръжката ще важат за допълнителни въпроси, свързани с нея, както и за проблеми, които не спадат към тази конкретна гореща корекция. За пълен списък на телефонните номера за обслужване на клиенти и поддръжка на Microsoft или за създаване на отделна заявка за обслужване посетете следния уеб сайт на Microsoft:
http://support.microsoft.com/contactus/?ws=support Забележка: Формулярът "Възможно е изтегляне на гореща поправка" показва езиците, за които е налична горещата поправка. Ако не виждате вашия език, това е защото не е налична актуална поправка за този език.
Повече информация
CauseSQL Server използва шлюзовете за компилиране за ограничаване на компилациите. Архитектурата на шлюза е начин за SQL Server да поддържа под контрол използването на паметта за компилирането на входящите заявки. Има три шлюза: малък, среден и голям.
За повече информация относно как да използвате командата DBCC MEMORYSTATUS за наблюдение на използването на паметта, вижте KB 907877: Как да използвате командата DBCC MEMORYSTATUS за наблюдение на използването на паметта на SQL Server 2005.
Състояние
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.