Microsoft 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 SQL Server 2014 Enterprise SQL Server 2014 Express SQL Server 2014 Standard SQL Server 2016 Developer SQL Server 2016 Enterprise SQL Server 2016 Standard Еще…Меньше
ВВЕДЕНИЕ
В версиях Microsoft SQL Server более поздней версии SQL Server 2000 с пакетом обновления 3 (SP3) большинство префиксов были доставлены оптимизатору запросов в состоянии не по умолчанию, чтобы существующие клиенты не видели ожидаемых изменений планов, которые могут привести к регрессии производительности. Сначала каждый hotfix доставлялся под отдельным флагом трассировки. Позже эта методика была изменена таким образом, что большинство флагов были объединены под одним флагом трассировки (4199). Эта новая методика была инициировалась в нескольких версиях, начиная со следующих обновлений:
-
SQL Server обновления 3 (SP3) версии 2005
-
SQL Server пакет обновления 1 (SP1) версии 2008
-
SQL Server 2008 R2 (RTM)
Флаг трассировки 4199 использовался для сбора исправлений, которые должны были использоваться по умолчанию в будущих выпусках, в то время как другие флаги трассировки использовались для ситуаций, в которых исправление не должно было стать по умолчанию в текущей форме. Начиная с SQL Server RTM 2016, параметр COMPATIBILITY_LEVEL базы данных будет использоваться по умолчанию для отслеживания пометок 4199. В этой статье описаны механизмы и политика доставки префиксов, влияющих на план, для SQL Server 2016 и более поздних версий.
Дополнительная информация
В SQL Server 2016 г. в базе данных COMPATIBILITY_LEVEL будет включен флажок трассировки 4199 hotfix, которые были сделаны в предыдущих выпусках 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, так как это позволяет клиенту быстро перейти на более новую версию, если во время обновления возникла непредвиденное проблему с производительностью плана. Если клиент обнаружит непредвиденное изменение плана, которое блокирует обновление приложения, он может упростить ситуацию, применив соответствующий план с помощью магазина запросов, чтобы применить предыдущий план, или обратитесь в службу поддержки клиентов Майкрософт за помощью в поиске обходного решения или использования hotfix. Если уменьшить количество проблем, обновление может продолжаться. Клиенты должны интегрировать эту возможность в планирование обновления SQL Server 2016.
В следующей таблице объясняется модель работы флага трассировки 4199 начиная с SQL Server 2016.
|
Параметр |
SQL уровня совместимости |
Флаг трассировки 4199 |
Префиксы оптимизатора до SQL Server RTM 2016 |
Оптимизированные hotfixes после SQL Server RTM 2016 |
|---|---|---|---|---|
|
1. |
120 |
Выкл. |
Отключен |
Отключен |
|
2. |
120 |
Вкл |
Включен |
Отключен |
|
3. |
130 |
Выкл. |
Включено на уровне совместимости |
Отключен |
|
4. |
130 |
Вкл |
Включено на уровне совместимости |
Включено на уровне совместимости |
Примечание. Для клиентов, которые обновляются до SQL Server 2016, рекомендуется установить SQL Server 3.
Для основных выпусков SQL Server 2016 г. корпорация Майкрософт планирует продолжать использовать эту модель обслуживания для оптимизации hotfix. По умолчанию (или в каждом выпуске) все исправление флага трассировки 4199 из предыдущего выпуска будут включены на следующем уровне совместимости. Это означает, что рекомендуемое состояние для клиентов после перехода на последний уровень совместимости будет иметь отключенную пометку трассировки 4199. Позже с помощью флага трассировки 4199 можно было бы включить исправления для клиентов, которым необходимо включить определенные исправления в приложении. Клиентам рекомендуется отключить флажок трассировки 4199 после обновления приложения до последней версии, чтобы избежать неожиданного включения в приложении будущих изменений оптимизатора. Это обновление до последней совместимости и удаление флага трассировки 4199 по-прежнему включает все исправления, которые были за счет рабочей нагрузки перед обновлением, а не новые исправления.
Примечание. Хотя многие hotfixer-оптимизатора включены под флагом трассировки 4199, в некоторых используются другие флаги трассировки. Флаг трассировки 4199 традиционно охватывает флаги трассировки, которые широко применимы и, вероятнее всего, будут включены по умолчанию в будущих выпусках. Альтернативные флаги трассировки используются в префиксах, где условия вполне конкретны только для нескольких клиентов, где исправление может привести к регрессии производительности в других приложениях или когда внутренняя функциональность может увидеть изменения, прежде чем она будет готова к включению для всех пользователей. Корпорация Майкрософт по-прежнему будет использовать другие флаги трассировки для обслуживания продукта.
Примечание В этой статье посвящена модель для выпуска исправлений флага трассировки 4199 на последнем уровне совместимости последнего продукта. (Во время публикации это SQL Server 2016.) Исправление оптимизатора может быть выпущено в более старых версиях SQL Server или на более низких уровнях совместимости (120 или более старых) SQL Server 2016. Корпорация Майкрософт оценивает каждый случай и определяет, следует ли использовать флаг трассировки 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 TRACEONTRACEOFF, новый план кэшации хранимой процедур не будет сгенерироваться повторно. Планы могут быть в кэше, созданных без флага трассировки.
Подробные сведения о том, как включить или отключить флажки трассировки, а также пояснения глобальных флагов и флагов трассировки на уровне сеанса, можно найти в следующих SQL Server Books Online:
-
DBCC TRACEON (Transact-SQL)
-
Настройка параметров запуска сервера (диспетчер конфигурации SQL Server)
Ссылки
Чтобы получить дополнительные сведения о схеме именования для SQL Server обновлений, щелкните номер следующей статьи, чтобы просмотреть статью в базе знаний Майкрософт:
822499
Новая схема именования для пакетов обновления Microsoft SQL Server программного обеспечения
Чтобы получить дополнительные сведения о терминологии обновления программного обеспечения, щелкните номер следующей статьи, чтобы просмотреть статью в базе знаний Майкрософт:
824684
Описание стандартных терминов, используемых для описания обновлений программного обеспечения Майкрософт
Нужна дополнительная помощь?
1c:setting-up-microsoft-sql-server-for-1c-enterprise-8-3:sql-server-tracing-flags
Содержание
Флаги трассировки SQL Server для 1С
Флаг 4199
При использовании Microsoft SQL Server 2014 необходимо включить исправление ошибок оптимизатора (KB974006), путём включения флага трассировки 4199.
Включение флага трассировки можно выполнить в консоли SQL Server Configuration Manager, добавив в свойствах службы экземпляра на вкладке Startup parameters к списку параметров запуска новую строку со значением:
-T4199
Чтобы включить флаг на текущей конфигурации экземпляра SQL Server, можно выполнить запрос вида:
DBCC TRACEON (4199, -1); GO
Для SQL Server 2016 по умолчанию используется улучшенная логика оптимизатора запросов, поэтому включение данного флага не требуется.
Дополнительная информация по флагу:
Флаг 1118
Как включить флаги трассировки
Задать нужные флаги трассировки для экземпляра SQL Server можно с помощью консоли SQL Server Configuration Manager, где в свойствах службы экземпляра на вкладке Startup Parameters каждый флаг должен быть добавлен в отдельной строке в окно Existing parameters. То есть каждый флаг добавляется отдельно через кнопку Add.
Для вступления изменений в силу требуется выполнить перезапуск службы экземпляра SQL Server.
Как проверить активные флаги
Проверить действующие для экземпляра SQL Server флаги трассировки можно T-SQL запросом:
DBCC TRACESTATUS
Дополнительные источники информации:
Проверено на следующих конфигурациях:
| Версия SQL Server |
|---|
| Microsoft SQL Server 2016 SP2 CU4 (13.0.5233.0) |
Автор первичной редакции:
Алексей Максимов
Время публикации: 17.04.2019 11:17
1 — 29.03.17 — 12:14
Особенности 8.3.9 Опубликовано 17.08.2016
С версии 8.3.9.1818, 1С:Предприятие поддерживает прозрачную переустановку разорванных соединений с SQL-сервером, за исключением случаев разрыва соединения при активной транзакции.
Реализована поддержка СУБД Microsoft SQL Server 2016.
Ускорена работа в многопользовательском режиме при использовании СУБД Microsoft SQL Server при активном использовании tempdb, а также устранены задержки при закрытии соединений.
Для Microsoft SQL Server 2014 сервер «1С:Предприятия» выполняет принудительную установку TRACE FLAG 4199. В связи с этим в настройках соединения сервера «1С:Предприятие» с СУБД необходимо указывать пользователя, обладающего административными правами sysadmin.
Источник: http://downloads.v8.1c.ru/content//Platform/8_3_9_2170/1cv8upd.htm#7c1b8dd6-9531-11e6-a3f7-0050569f678a
Реализована возможность поглощения управляемых блокировок. Блокировка, в которой указаны значения не всех пространств блокировки, поглотит блокировку, в которой указаны значения для большего количества пространств блокировки, при условии, что совпадают значения по совпадающим пространствам блокировок.
Если при эскалации блокировки возникает конфликт с уже наложенными блокировками, то эскалация не выполняется, а производится попытка установить запрошенную блокировку. В этом случае возможна ситуация, когда в системе будет существовать более 100 000 блокировок на одно пространство.
В случае, если используется транзакция с большим количеством управляемых блокировок, которые отличаются, например, значением одного измерения, рекомендуется вместо большого количества блокировок установить одну управляемую блокировку, для которой не будет установлено значение отличающегося измерения.
- Remove From My Forums
-
Question
-
Hi all,
I’ve two identical instances (SQL Server 2014 Standard Edition 12.0.4459), on both instance it exists one database which is identical on both.
One these instances has TF 4199 enabled at startup, on this instance a given query (a complex one which involved XML search and some huge MERGE statements) never completes (i’ve killed the query after 10 minutes). I have no locking during this execution,
CPU is very low and the request seems to be stuck on the MERGE statement that bounces from RUNNING-RUNNABLE state.On the instance without TF4199 the query completes in 0.3 seconds on average. If I enable TF 4199 only for the current session and I run the query again (after having flushed the plan cache) the query again never completes, so I think TF 4199 is guilty.
Any advice how to drill down the problem?

- Remove From My Forums
-
Question
All replies
-
You can turn a trace flag for a session with
DBCC TRACEON(4199)You can turn it on for the entire server, if you add -1:
DBCC TRACEON(4199, -1)
This has effect until SQL Server is restarted.
If you want the trace flag to be on permanently, you go to SQL SQL Server Configuration Manager, right-click the instance, select Properties and then the Startup Parameters tab and enter -T4199 and press Add. The change will not take effect until SQL Server
is restarted, but that’s what you use DBCC TRACEON for.
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
-
Hi sakurai_db,
>> May I know manually turn on Trace flag 4199 is also required to enable query fix for SQL 2012,SQL 2014 ?
It seems we need. Starting with SQL Server 2016 RTM, the database COMPATIBILITY_LEVEL setting will be used enable trace flag 4199-related hotfixes on-by-default.
Best regards,
Cathy
MSDN Community Support
Please remember to click «Mark as Answer» the responses that resolved your issue, and to click «Unmark as Answer» if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to
MSDN Support, feel free to contact MSDNFSF@microsoft.com-
Proposed as answer by
Monday, August 19, 2019 7:18 AM
-
Proposed as answer by
-
It seems we need. Starting with SQL Server 2016 RTM, the database COMPATIBILITY_LEVEL setting will be used enable trace flag 4199-related hotfixes on-by-default.
Yes, if your database is in compat level 130, you will get all optimizer-related hotfixes that were issued for SQL 2008 to SQL 2014. To get optimizer fixes released after SQL 2016 RTM, you need to have trace flag flag 4199 enabled.
And this is generalizable to later version. On SQL 2017 with compat level 140, you will get all hotfixes that were released for SQL 2016 and earlier, but you need to opt in with trace flag 4199 to get fixes released after SQL 2017 RTM. For SQL 2017 there
is also a databsae scoped configuraiton, that permits you to opt in per database.
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
-
Proposed as answer by
Cathy JiMicrosoft contingent staff
Monday, August 19, 2019 7:18 AM
-
Proposed as answer by

- Remove From My Forums
-
Question
All replies
-
You can turn a trace flag for a session with
DBCC TRACEON(4199)You can turn it on for the entire server, if you add -1:
DBCC TRACEON(4199, -1)
This has effect until SQL Server is restarted.
If you want the trace flag to be on permanently, you go to SQL SQL Server Configuration Manager, right-click the instance, select Properties and then the Startup Parameters tab and enter -T4199 and press Add. The change will not take effect until SQL Server
is restarted, but that’s what you use DBCC TRACEON for.
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
-
Hi sakurai_db,
>> May I know manually turn on Trace flag 4199 is also required to enable query fix for SQL 2012,SQL 2014 ?
It seems we need. Starting with SQL Server 2016 RTM, the database COMPATIBILITY_LEVEL setting will be used enable trace flag 4199-related hotfixes on-by-default.
Best regards,
Cathy
MSDN Community Support
Please remember to click «Mark as Answer» the responses that resolved your issue, and to click «Unmark as Answer» if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to
MSDN Support, feel free to contact MSDNFSF@microsoft.com-
Proposed as answer by
Monday, August 19, 2019 7:18 AM
-
Proposed as answer by
-
It seems we need. Starting with SQL Server 2016 RTM, the database COMPATIBILITY_LEVEL setting will be used enable trace flag 4199-related hotfixes on-by-default.
Yes, if your database is in compat level 130, you will get all optimizer-related hotfixes that were issued for SQL 2008 to SQL 2014. To get optimizer fixes released after SQL 2016 RTM, you need to have trace flag flag 4199 enabled.
And this is generalizable to later version. On SQL 2017 with compat level 140, you will get all hotfixes that were released for SQL 2016 and earlier, but you need to opt in with trace flag 4199 to get fixes released after SQL 2017 RTM. For SQL 2017 there
is also a databsae scoped configuraiton, that permits you to opt in per database.
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
-
Proposed as answer by
Cathy JiMicrosoft contingent staff
Monday, August 19, 2019 7:18 AM
-
Proposed as answer by