Applies ToMicrosoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Standard X64 Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Workgroup Edition SQL Server 2008 Standard SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

ВЪВЕДЕНИЕ

Версиите на Microsoft SQL Server по-късно от SQL Server 2000 Service Pack 3 (SP3) доставиха повечето актуални корекции на оптимизатора на заявки в състояние "изключено по подразбиране", за да предотвратите на съществуващите производствени клиенти да виждат очакваните промени в плана, които могат да доведат до регресии на производителността. Отначало всяка актуална корекция е доставена под отделен флаг за проследяване. По-късно тази практика е променена, така че повечето флагове да са комбинирани под един флаг за проследяване (4199). Тази нова практика е инициирана в множество версии, започвайки със следните актуализации:

  • SQL Server 2005 Service Pack 3 (SP3) кумулативна актуализация 6

  • SQL Server 2008 Service Pack 1 (SP1) кумулативен пакет за актуализация 7

  • SQL Server 2008 R2 (RTM)

Флаг за проследяване 4199 е използван за събиране на актуални корекции, които са предназначени да станат по подразбиране в бъдещо издание, докато други флагове за проследяване са използвани за ситуации, в които корекцията не е предназначена да стане по подразбиране в текущия формуляр. Започвайки от SQL Server 2016 RTM, настройката за COMPATIBILITY_LEVEL базата данни ще се използва за разрешаване на корекции, свързани с флаг за проследяване 4199, по подразбиране. В тази статия е описан механиката и правилата за начина, по който ще бъдат доставяни актуални корекции, засягащи плана, за SQL Server 2016 г. и по-нови версии.

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

В SQL Server 2016 г. флаг за проследяване 4199 актуални корекции, които са направени в предишни издания на SQL Server, ще станат разрешени под база данни COMPATIBILITY_LEVEL 130 без флаг за проследяване 4199 разрешено. Флаг за проследяване 4199 ще се използва за издаване на всички бъдещи SQL Server корекции за 2016 г. за бази данни с помощта на нивото на съвместимост 130. Тъй като флаг за проследяване 4199 се препоръчва само за клиенти, които виждат конкретни проблеми с производителността, на клиентите се препоръчва да премахват флаг за проследяване 4199, след като мигрират своите бази данни към най-новото ниво на съвместимост, тъй като флагът за проследяване 4199 ще се използва повторно за бъдещи корекции, които може да не се отнасят за вашето приложение, и може да доведат до неочаквани промени в производителността на плана в производствена система. Това означава, че различни корекции с флаг за проследяване 4199 са разрешени за всяко ниво на съвместимост, което се поддържа в дадено издание на продукта. Най-новото ниво на съвместимост вече разрешава всички предишни корекции под флаг за проследяване 4199. Това означава, че надстройването на база данни до най-новото ниво на съвместимост и премахването на флаг за проследяване 4199 все още разрешава всички корекции, които е използвало работното натоварване преди надстройката на базата данни, но не и новите корекции. Ако в по-късен момент клиентите имат проблеми с производителността на заявките, експериментирайте с разрешаването на опцията с обхват на базата данни QUERY_OPTIMIZER_HOTFIXES или подсказване на заявка ENABLE_QUERY_OPTIMIZER_HOTFIXES в тестова среда, за да определите дали проблемите са решени. Вижте документацията за QUERY_OPTIMIZER_HOTFIXES

Забележка По подразбиране базите данни, които са създадени в SQL Server 2016, използват ниво на съвместимост 130 и вече имат разрешена нова логика на оптимизатора.Голямото предимство на този модел е, че намалява риска за производствените системи по време на процеса на надстройка. Този подход отделя инсталирането на нова основна версия на SQL Server автоматичното разрешаване на всички нови промени в процесора на заявки. Тъй като основните надстройки на версиите променят файловия формат и не са обратими, добра идея е да използвате настройката COMPATIBILITY_LEVEL, тъй като това позволява на клиента бързо да се понижи, ако бъде намерен неочакван проблем с производителността на плана по време на надстройка. Ако клиентът открие неочаквана промяна в плана, която блокира надстройката на приложение, клиентът може да облекчи ситуацията, като приложи подходяща подсещане за плана, като използва хранилището за заявки, за да накара предварителния план, или може да улесни ситуацията, като се свърже с отдела за поддръжка на клиенти на Microsoft, за да ви помогне да предоставите заобиколно решение или актуална корекция. Когато всички проблеми са снишени, надстройката може да продължи. Клиентите трябва да интегрират тази възможност в планирането на надстройката за SQL Server 2016 г.Следващата таблица обяснява модела как ще работи флагът за проследяване 4199, започвайки с SQL Server 2016.

Настройка

SQL на съвместимост

Флаг за проследяване 4199

Оптимизатор на актуални корекции преди SQL Server 2016 RTM

Оптимизатор на спешни корекции след SQL Server 2016 RTM

1.

120

Изкл.

Забранено

Забранено

2.

120

На

Разрешено

Забранено

3.

130

Изкл.

Разрешено от ниво на съвместимост

Забранено

4.

130

На

Разрешено от ниво на съвместимост

Разрешено от ниво на съвместимост

Забележка Задаване не. 3 се препоръчва за клиенти, които наскоро надстройят до SQL Server 2016.За основни издания след SQL Server 2016 г. Microsoft планира да продължи да използва този модел на обслужване за оптимизаторски актуални корекции. По подразбиране или всяко издание всички корекции с флаг за проследяване 4199 от предишното издание ще бъдат разрешени на следващото ниво на съвместимост. Това означава, че препоръчителната държава за клиентите, след като мигрират към най-новото ниво на съвместимост, ще бъде да има забранен флаг за проследяване 4199. По-късните актуални корекции ще използват флаг за проследяване 4199, за да позволят корекции за клиенти, които трябва да активират тези конкретни актуални корекции в приложение. Препоръчително е клиентите да забранят флага за проследяване 4199, след като приложението бъде надстроено до най-новото ниво на съвместимост, за да се избегне неочакваното активиране на неочаквани бъдещи промени на оптимизатора в приложение. Надстройването до най-новото ниво на съвместимост и премахването на флага за проследяване 4199 все още позволява всички корекции, които е използвало работното натоварване преди надстройката, но не и новите корекции.

Забележка Въпреки че много актуални корекции за оптимизатора са разрешени под флаг за проследяване 4199, някои използват други флагове за проследяване. Флаг за проследяване 4199, които исторически са покрити с флагове за проследяване, които са широко приложими и има вероятност да станат разрешени по подразбиране в бъдещо издание. В спешните корекции се използват алтернативни флагове за проследяване, където условията са много специфични само за няколко клиенти, където корекцията може да доведе до регресии на производителността в други видове приложения или когато вътрешната функционалност може да види промени, преди да е готова да стане разрешена за всички. Microsoft ще продължи да използва други флагове за проследяване, ако е необходимо, за да обслужва продукта.Забележка Тази статия се фокусира върху модела за освобождаване на флаг за проследяване 4199 актуални корекции на най-новото ниво на съвместимост на най-новия продукт. (В момента на публикуване това е SQL Server 2016 г.) Актуалните корекции за оптимизатора може да бъдат издадени на по-стари пазарни версии на SQL Server или на по-ниски нива на съвместимост (120 или преди) на SQL Server 2016. Microsoft ще оцени всеки случай и ще определи дали да използва флаг за проследяване 4199, или друг флаг за проследяване. Тъй като промените, които не са актуални, също са разрешени, когато се извърши преместване на по-късно ниво на съвместимост, няма конкретно обещание, че по време на надстройката няма да възникнат промени в плана (със или без флаг за проследяване 4199). Клиентите винаги трябва да тестват внимателно промените в нивото на съвместимост за производствените приложения и трябва да използват технологии за смекчаване, като например хранилището за заявки, ако има проблем с производителността, свързан с избор на план.За справка следните флагове за проследяване са използвани за актуални корекции на процесора на заявки преди въвеждането на флаг за проследяване 4199:

4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4115, 4116, 4117, 4119, 4120, 4121, 4122, 4124, 4125, 4126, 4127, 4128, 4129, 4131, 4133, 4135.

SQL Server 2012 г. и по-нови версии

Флагът за проследяване 4199 е включен в изданията на SQL Server 2012 и по-нови версии.

Как да разрешите флаг за проследяване 4199

Можете да разрешите флаг за проследяване 4199 при стартиране или в потребителска сесия. Този флаг за проследяване има ефект на глобално ниво или на ниво сесия. За да разрешите флаг за проследяване 4199, използвайте командата DBCC TRACEON или използвайте –T 4199 като параметър за стартиране.Ако се използва DBCC TRACEON\TRACEOFF, това не възстановява нов кеширан план за съхранени процедури. Плановете може да са в кеша, които са създадени без флага за проследяване.За подробна информация как да разрешите или забраните флаговете за проследяване и за обяснения на флаговете за проследяване на глобално ниво и на ниво сесия вижте следните теми в SQL Server Books Online:

Препратки

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

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

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

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

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

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

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