Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

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

Симптоми

Обмислете следния сценарий: Изпълнявате заявка в Microsoft SQL Server 2008 R2 или в Microsoft SQL Server 2012 и оптимизатора на заявки генерира план за изпълнение, който съдържа горния оператор. В този случай заявката може да отнеме много време, за да се изпълни. Например изпълните заявка, подобна на следната:

SELECT TableA.Col1 FROM TableA JOIN TableB ON TableA.Col1 = TableB.Col1 WHERE TableA.Col2 = N'A' AND TableB.Col3 IN (SELECT Col1 FROM TableC )Тази заявка включва две съединения. Едно съединение е между TableB и TableC. (Това се подразбира от наличието на в предикат.) Другото съединение е между таблица а и резултатът от първото съединение. В предикат ще се върне TRUE, ако заявката намери поне един ред, който отговаря на първото съединение. Следователно оптимизатора на заявки добавя горния оператор в плана за изпълнение на заявката. Подобна заявка може да върне само няколко реда. Възможно е обаче да е необходимо повече време, за да се изпълни тази заявка, отколкото се очаква. В действителния план за изпълнение на заявката прогнозният брой редове се различава значително от действителния брой редове. Това влияе върху възможността за оптимизатор на заявки за точно определяне на разходите за различни варианти на плана. Този проблем може да възникне също и ако използвате този оператор изрично или ако използвате един от следните оператори:

  • ОПЦИЯ (БЪРЗО N)

  • В

  • СЪЩЕСТВУВА

Решение

Информация за сборна актуализация

SQL Server 2008 R2 Service Pack 2

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

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

2730301 SQL Server 2008 R2 изгражда, които са издадени след SQL Server 2008 R2 Service Pack 2 е издадена

SQL Server 2008 R2 сервизен пакет 1

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

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

2567616 SQL Server 2008 R2 изгражда, които са издадени след SQL Server 2008 R2 Service Pack 1 е издадена

SQL Server 2012

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

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

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

SQL Server 2008 R2

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

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

981356 SQL Server 2008 R2, които са издадени след издаването на SQL Server 2008 R2Забележка След като инсталирате сборната актуализация, трябва да включите Трейс Flag 4199, за да разрешите корекцията, която се предоставя в тази сборна актуализация, ако са TRUE следните условия:

  • Планът на заявката има ПЪРВОКЛАСен оператор над вложен оператор за съединение на линия (съединение 1) от дясната страна на друг оператор за прилагане/присъединяване (съединение 2).

  • Външната страна на съединение 1 има външна препратка към външната страна на съединение 2.

  • Съединение 1 използва предикат на равнопоставеността в лявата колона, която е уникална.

В секцията "симптоми" се появява пример за подобна заявка. (Това предполага, че в базата данни съществуват някои ограничения за уникалността.) Ако има други заявки, които съдържат TOP, OPTION (бързо N), в или СЪЩЕСТВУВА оператори и произвежда подобни симптоми, но не се побират в модела, който е описан тук, включете Трейс Flag 4138.Предупреждение Ако разрешите Трейс флаг 4138, производителността може да се намали за някои други заявки, които съдържат най-горе, опция (FAST N), в или СЪЩЕСТВУВА оператори. Флагът за проследяване 4138 трябва да се използва само когато са изпълнени следните условия:

  • Ефектът му върху бавни заявки, които включват тези оператори, е потвърден.

  • Няма други полезни заобиколни решения.

  • В други заявки, съдържащи подобни оператори, не се откриват регресии.

Състоянието

Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".

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

За да заобиколите този проблем, използвайте левия външен оператор за съединение или някои от някои съвети за ОПТИМИЗАТОРА.

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

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

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

Благодарим ви за обратната връзка!

×