KB2344600 – КОРЕКЦИЯ: Може да възникне грешка "Non-yielding Scheduler", когато използвате функцията CONTAINSTABLE заедно с много предикати OR и AND в SQL Server 2008 или SQL Server 2008 R2

Отнася се за
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Workgroup SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Workgroup

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

Симптоми

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

  • Имате заявка за търсене в пълен текст, която използва функцията CONTAINSTABLE заедно с много предикати OR и AND в условието в Microsoft SQL Server 2008 или SQL Server 2008 R2. Например имате следните 50 операции "AND": Деклариране @Keywords на varchar(4000) = NULL

    set @Keywords= N'((((((((((((((((((((((((((((((((((((((((((((((((((((
    ("TOKarchitect" OR "архитектурен")
    AND ("TOKengineer" OR "инженер"))
    AND "джинер") AND ("TOKmechanical" OR "Mechanical"))
    AND ("TOKengineer" OR "Engineering"))
    AND ("TOKelectronic" OR "Electronics")) AND ("TOKengineer" OR "Инженер")) AND ("TOKelectronic" OR "Electronics")) AND ("TOKengineer" OR "Engineering")) AND ("TOKelectric" OR "Electrical")) AND ("TOKengineer" OR "Electrical")) AND ("TOKelectric" OR "Electrical")) AND ("TOKengineer" OR "Engineering")) AND ("TOKcontrol" OR "Systems")) AND ("TOKsystem" OR "Systems")) AND ("TOKengineer" OR "Engineer")) AND ("TOKproject" OR "Project")) AND ("TOKmanager" OR "Manager")) AND ("TOKengineer" OR "Manager")) AND ("TOKengineer" OR "Инженеринг")) AND "Схема") AND ("TOKmanufacturing" OR "Manufacturing")) AND ("TOKengineer" OR "Engineer")) AND ("TOKmetallurgist" OR "Metallurgy")) AND ("TOKmetallurgist" OR "Metallurg")) AND ("TOKprocess" OR "Process")) AND ("TOKTechnology" OR "Technology")) AND ("TOKproduct" OR "Production")) AND ("TOKengineer" OR "Engineer")) AND ("TOKengineer" OR "Quality")) AND ("TOKengineer" OR "Engineer")) AND ("TOKuality" OR "Quality")) AND ("TOKcontrol" OR "Control")) AND ("TOKengineer" OR "Quality")) AND ("TOKengineer" OR "Инженер")) AND "Мехатроника") AND ("TOKcivil" OR "Civil")) AND ("TOKengineer" OR "Инженер")) AND ("TOKcivil" OR "Civil")) AND ("TOKengineer" OR "Engineering")) AND ("TOKdesign" OR "Проектиране")) AND ("TOKdesign" OR "Engineering")) AND ("TOKengineer" OR "Engineer")) AND ("TOKgraduate" OR "Graduate")) AND ("TOKgraduate" OR "Engineer")) AND ("TOKgraduate" OR "Graduate")) AND ("TOKgraduate" OR "Engineering")) AND ("TOKengineer" OR "Engineering")) AND ("TOKgraduate" OR "Engineering")) AND ("TOKgraduate" ИЛИ "Завършил")) AND ") ANDNOT (") AND ("TOKRecruitment" OR "Recruitment")) AND ("TOKconsultant" OR "консултант")) AND ("TOKtrainee" OR "стажант")) AND ("TOKRecruitment" OR "recruitment"))'

    изберете * от CONTAINSTABLE(test_table, *, @keywords, 1000)

  • Вие изпълнявате заявката.

В този случай може да възникне грешка "Планиране без предоставяне". Освен това в регистрационния файл на приложението на SQL Server 2008 или SQL Server 2008 R2 се генерира мини-дъмп файл и следната грешка се регистрира в регистрационния файл за грешки на SQL Server:

Забележка

<Сървър за клеймо> с дата и час, използващ dbghelp.dll версия 4.0.5

<Сървър за клеймо> с дата ***Не може да се получи контекст на нишка за spid 0
<Сървър за клеймо> *
*******************************************************************************

<Сървър за клеймо> *

<Сървър за времеви клейма> * НАЧАЛО НА КОПИЕ НА СТЕКА

<Сървър за клеймо> * <Time>spid< SPID>
<Сървър за клеймо> *

<Сървър за клеймо> с дата и час * Планировчик за непрехвърляне

<Сървър за клеймо> *

<Сървър за клеймо> *
*******************************************************************************

<Стек на сървъра за времево клеймо> Подписът за вторичното копие е 0x000000000000030D

<Сървър за времево клеймо> Външен код за връщане на дъмп процес 0x20000001. Процесът на външно вторично копие не върна никакви грешки.

<Процес на сървъра за времеви клейма> 0:0:0 (0xf94) Worker 0x00000000817481A0 изглежда неотстъпващ на планировчика 0. Време за създаване на нишката: 12925321224306. Приблизително нишка Използван процесор: ядро 62 мс, потребител 75187 мс. Използване на процеса 98%. Системата е неактивна 0%. Интервал: 76403 мс.

<Процес на сървъра за времеви клейма> 0:0:0 (0xf94) Worker 0x00000000817481A0 изглежда неотстъпващ на планировчика 0. Време за създаване на нишката: 12925321224306. Приблизително нишка Използван процесор: ядро 125 ms, потребител 145250 ms. Използване на процеса 98%. Системата е неактивна 0%. Интервал: 148417 мс.

<Процес на сървъра за времеви клейма> 0:0:0 (0xf94) Worker 0x00000000817481A0 изглежда неотстъпващ на планировчика 0. Време за създаване на нишката: 12925321224306. Използван процесор за приблизителен поток: ядро 171 мс, потребителски 205515 мс. Използване на процеса 98%. Системата е неактивна 0%. Интервал: 209729 мс.

<Процес на сървъра за времеви клейма> 0:0:0 (0xf94) Worker 0x00000000817481A0 изглежда неотстъпващ на планировчика 0. Време за създаване на нишката: 12925321224306. Приблизително нишка Използван процесор: ядро 218 мс, потребителски 266343 мсек. Използване на процеса 98%. Системата е неактивна 0%. Интервал: 271588 мс.

<Процес на сървъра за времеви клейма> 0:0:0 (0xf94) Worker 0x00000000817481A0 изглежда неотстъпващ на планировчика 0. Време за създаване на нишката: 12925321224306. Приблизително нишка Използван процесор: ядро 234 мс, потребителски 325156 мсек. Използване на процеса 97%. Системата е неактивна 0%. Интервал: 333671 мс.
<Процес на сървъра за времеви клейма> 0:0:0 (0xf94) Worker 0x00000000817481A0 изглежда неотстъпващ на планировчика 0. Време за създаване на нишката: 12925321224306. Използван процесор с приблизителен нишка: ядро 296 мс, потребител 386000 мс. Използване на процеса 97%. Системата е неактивна 0%. Интервал: 396370 мс.

Причина

Този проблем възниква, защото SQL Server 2008 или SQL Server 2008 R2 не пуска планировчик правилно.

Решение

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

SQL Server 2008 R2

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

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

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

SQL Server 2008 Service Pack 1

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

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

970365 Компилациите на SQL Server 2008, които са издадени след издаването на SQL Server 2008 Service Pack 1 Актуалните корекции на Microsoft SQL Server 2008 се създават за определени сервизни пакети за SQL Server. Трябва да приложите актуална корекция за SQL Server 2008 Service Pack 1 към инсталация на SQL Server 2008 Service Pack 1. По подразбиране всяка актуална корекция, предоставена в сервизен пакет на SQL Server, се включва в следващия сервизен пакет на SQL Server.

SQL Server 2008 Service Pack 2

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

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

2402659 Компилациите на SQL Server 2008, които са издадени след издаването на SQL Server 2008 Service Pack 2

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

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

За да направите това, използвайте функцията FORMSOF заедно със стойността за "Синонимен речник" и след това добавете всички ключови думи като параметри.

За примера, описан в раздела "Симптоми", по-долу е дадена актуализирана версия на примерната заявка: Изберете * от test_table, където Съдържа(*,'ФОРМУЛЯРИ (СИНОНИМЕН РЕЧНИК,"архитектурен","инженер","Механичен","Инженер","Електроника","Инженер","Електроника","Управление","Системи","Проект","Ръководител","Производство","Металург","Процес","Проектиране","Технология","Производство","Качество","Контрол","Гражданско","Дипломиран","Набиране","Консултант","Стажант" ;"recruitment")')

Състояние

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

Справки

За повече информация относно функцията CONTAINSTABLE посетете следния уеб сайт на Microsoft Developer Network (MSDN):

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

935897 От екипа на SQL Server се предлага модел на постъпково обслужване, който да предоставя актуални корекции за съобщени проблеми

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

822499 Нова схема за именуване на пакетите за актуализация на софтуера на Microsoft SQL Server За повече информация относно терминологията за софтуерни актуализации щракнете върху следния номер на статия в базата знания на Microsoft:

824684 Описание на стандартната терминология, която се използва за описание на софтуерните актуализации на Microsoft