KB2649913 – КОРЕКЦИЯ: Производителността може да намалее, когато изпълните заявка, използваща sp_cursoropen съхранена процедура, след като надстроите от SQL Server 2005 до SQL Server 2008 или до SQL Server 2008 R2 или до SQL Server 2012

Отнася се за
SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Express with Advanced Services SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Workgroup SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Express with Advanced Services SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard

Microsoft разпространява корекциите за Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) или Microsoft SQL Server 2012 в един файл, който може да се изтегли. Тъй като корекциите са кумулативни, всяко ново издание съдържа всички актуални поправки и актуализации на защитата, които са били включени в предишното издание на актуализация на SQL Server 2008 R2 Service Pack 1 (SP1) или Microsoft SQL Server 2012.

Симптоми

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

  • Надстройвате от Microsoft SQL Server 2005 до Microsoft SQL Server 2008 или до Microsoft SQL Server 2008 R2 или до Microsoft SQL Server 2012.
  • Изпълнявате заявка, която използва sp_cursoropen съхранена процедура, и след това задавате параметъра rowcount за извличане на първите няколко реда на таблица.

В този случай производителността може да е по-ниска, отколкото ако изпълните същата заявка в SQL Server 2005.

Причина

Този проблем възниква, защото оптимизаторът на заявките използва план на статичния курсор вместо план на динамичния курсор. За план на статичен курсор SQL Server извлича всички редове и ги вмъква в работната таблица на курсора. Обаче за динамичен план на курсора SQL Server извлича само редовете, които са необходими.

Решение

Кумулативна информация за актуализацията

SQL Server 2012

Корекцията за този проблем е издадена за първи път в сборна актуализация 1 за SQL Server 2012. За допълнителна информация относно този пакет за кумулативна актуализация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2679368 Сборен пакет за актуализация 1 за SQL Server 2012Note Тъй като компилациите са кумулативни, всяка нова корекция съдържа всички актуални поправки и корекции на защитата, които са включени в предишното издание на корекция SQL Server 2012. Microsoft препоръчва да обмислите прилагането на най-новото издание на корекцията, което съдържа тази гореща корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2692828 Компилациите на SQL Server 2012, които са издадени след издаването на SQL Server 2012 Трябва да приложите актуална корекция на SQL Server 2012 към инсталация на SQL Server 2012.

Сборен пакет за актуализация 5 за SQL Server 2008 R2 SP1

След като приложите тази гореща корекция, разрешете проследяване на флаг 4199.

Корекцията за този проблем е издадена за първи път в кумулативна актуализация 5. За допълнителна информация как да получите този сборен пакет за актуализация за SQL Server 2008 R2 SP1 щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2659694 Сборен пакет 5 за SQL Server 2008 R2 SP1Note Тъй като компилациите са кумулативни, всяка нова корекция съдържа всички актуални поправки и корекции на защитата, които са включени в предишното издание на корекция за SQL Server 2008 R2 SP1. Препоръчваме ви да помислите за прилагане на най-новото издание на корекцията, което съдържа тази гореща корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2567616 Компилациите на SQL Server 2008 R2, които са издадени след издаването на SQL Server 2008 R2 SP1

Заобиколно решение

За да заобиколите този проблем, добавете към заявката съвет за заявка FAST.

Повече информация

За повече информация как да използвате съвети за заявки, посетете следния уеб сайт на MSDN:

Обща информация как да използвате съвети за заявки За повече информация относно проследяване на флаг 4199 посетете следния уеб сайт:

Обща информация за trace flag 4199

Състояние

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