Флаги трассировки (Transact-SQL)

Флаги трассировки используются для временной установки определенных характеристик сервера или отключения определенного режима. Например, если флаг трассировки 3205 установлен при запуске экземпляра SQL Server, то отключается режим аппаратного сжатия для ленточных накопителей. Флаги трассировки часто используются для диагностики проблем, связанных с производительностью, отладки хранимых процедур или сложных компьютерных систем.

В следующей таблице перечислены и описаны флаги трассировки, доступные в SQL Server.

Примечание

Поведение флага трассировки может не поддерживаться в следующих версиях SQL Server.

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Флаг трассировки

Описание

260

Выводит сведения о версиях динамически загружаемых библиотек (DLL) расширенных хранимых процедур. Дополнительные сведения о функции __GetXpVersion() см. в разделе Создание расширенных хранимых процедур.

Область: глобальная или сеанс.

634

Отключает фоновую задачу сжатия columnstore. SQL Server периодически выполняет фоновую задачу, которая сжимает группы строк индекса columnstore с несжатыми данными, по одной такой группе строк за раз. Сжатие columnstore позволяет повысить производительность запросов, но при этом потребляются ресурсы системы. Время выполнения сжатия columnstore можно задавать вручную путем отключения фоновой задачи сжатия с помощью флага трассировки 634 с последующим явным вызовом ALTER INDEX REORGANIZE или ALTER INDEX REBUILD в нужное время.

Область: только глобальная.

1204

Возвращает ресурсы и типы блокировки, участвующие во взаимоблокировке и текущую команду, на которую влияет взаимоблокировка.

Область: только глобальная.

1211

Отключает укрупнение блокировки, основанное на слишком активном использовании памяти или на количестве блокировок. Компонент Компонент SQL Server Database Engine не будет повышать уровень блокировки с блокировки строки или страницы до блокировки таблицы.

При использовании этого флага трассировки может быть создано излишнее количество блокировок. Это может привести к снижению производительности компонента Компонент Database Engine или вызвать ошибки 1204 (невозможность выделить блокированный ресурс) из-за недостатка памяти

Если установлены оба флага трассировки 1211 и 1224, то флаг 1211 имеет более высокий приоритет. Однако, так как флаг трассировки 1211 препятствует укрупнению во всех случаях, даже при слишком активном использовании памяти, рекомендуется использовать флаг 1224. Это помогает избежать ошибок «отсутствия блокировок» при использовании большого числа блокировок.

Область: глобальная или сеанс.

1222

Возвращает ресурсы и типы блокировок, участвующих во взаимоблокировке, а также текущую команду, на которую влияет взаимоблокировка, в формате XML, не соответствующем ни одной XSD-схеме.

Область: только глобальная.

1224

Отключает укрупнение блокировок на основе количества блокировок. Однако слишком активное использование памяти может включить укрупнение блокировок. Компонент Компонент Database Engine укрупняет блокировки строк или страниц до блокировок таблиц (или секций), если объем памяти, используемый блокированными объектами, превышает одно из следующих условий.

  • Сорок процентов памяти, которая используется компонентом Компонент Database Engine. Применимо только в случае, если параметр locks процедуры sp_configure имеет значение 0.

  • Сорок процентов памяти блокировки, настроенной на использование параметра locks процедуры sp_configure. Дополнительные сведения см. в разделе Параметры конфигурации сервера (SQL Server).

Если установлены оба флага трассировки 1211 и 1224, то флаг 1211 имеет более высокий приоритет. Однако, так как флаг трассировки 1211 препятствует укрупнению во всех случаях, даже при слишком активном использовании памяти, рекомендуется использовать флаг 1224. Это помогает избежать ошибок «отсутствия блокировок» при использовании большого числа блокировок.

Примечание

Укрупнением блокировки до уровня гранулярности таблицы или HoBT можно также управлять с помощью параметра LOCK_ESCALATION инструкции ALTER TABLE.

Область: глобальная или сеанс.

1448

Разрешает средству чтения журнала репликации перемещаться вперед даже в том случае, если асинхронные вторичные реплики не подтвердили получение изменения. Средство чтения журнала всегда ожидает синхронные вторичные реплики, даже если установлен флаг трассировки. Средство чтения журнала не будет превышать минимальное время ожидания для синхронных вторичных реплик. Флаг трассировки применяется к экземпляру SQL Server, а не только к группе доступности, базе данных доступности или экземпляру средства чтения журнала. Вступает в силу немедленно без перезагрузки. Этот флаг трассировки не может быть активирован раньше времени или при сбое асинхронной вторичной реплики.

2528

Отключает параллельную проверку объектов с помощью инструкций DBCC CHECKDB, DBCC CHECKFILEGROUP и DBCC CHECKTABLE. По умолчанию степень параллелизма определяется обработчиком запросов автоматически. Максимальная степень параллелизма настраивается так же, как и параллельные запросы. Дополнительные сведения см. в разделе Настройка параметра конфигурации сервера max degree of parallelism.

В общем случае параллельное выполнение инструкций DBCC следует оставить включенным. Для инструкции DBCC CHECKDB обработчик запросов повторно оценивает и автоматически корректирует параллелизм в каждой проверяемой таблице или пакете таблиц. Иногда проверка может начаться, если сервер близок к состоянию простоя. Если администратору известно, что нагрузка повысится прежде, чем проверка будет завершена, он может вручную уменьшить или отключить параллелизм.

Отключение параллельной проверки DBCC может привести к значительному увеличению продолжительности выполнения команд DBCC, а если команда DBCC выполняется при включенном средстве TABLOCK, а параллелизм отключен, то таблицы могут оказаться заблокированными на длительные периоды времени.

Область: глобальная или сеанс.

3042

Обходит используемый по умолчанию алгоритм сжатия резервных копий с предварительным выделением места на диске, чтобы файл резервной копии увеличивался до своего конечного размера по мере необходимости. Этот флаг трассировки полезен для экономии пространства, так как выделяется только фактическое пространство, необходимое для резервной копии со сжатием. Но при этом его использование может немного снизить производительность (повысится продолжительность операции резервного копирования).

Дополнительные сведения об алгоритме предварительного выделения места на диске см. в разделе Сжатие резервных копий (SQL Server).

3205

По умолчанию инструкция DUMP или BACKUP использует аппаратное сжатие для накопителей на магнитной ленте, поддерживающих этот режим. С помощью этого флага трассировки можно отменить аппаратное сжатие для накопителей на магнитной ленте. Это полезно, если нужно обмениваться лентами с другими рабочими местами или накопителями на магнитной ленте.

Область: глобальная или сеанс.

3226

По умолчанию каждая успешная операция резервного копирования добавляет запись в журнал ошибок служб SQL Server и в журнал системных событий. При частом выполнении резервного копирования журнала такие сообщения об успешном выполнении быстро накапливаются, в результате чего создаются огромные журналы ошибок, в которых трудно найти другие сообщения.

С помощью этого флага трассировки можно подавить такие записи журнала. Это может быть полезным при частом выполнении резервного копирования журнала и в случае, если ни один из используемых скриптов не зависит от этих записей.

3608

Запрещает SQL Server автоматически запускать и восстанавливать все базы данных, кроме базы данных master. Базы данных будут запускаться и восстанавливаться при доступе к ним. Могут не работать некоторые функции, например изоляция моментального снимка и изоляция зафиксированной операции чтения с моментальным снимком. Используйте для следующих целей: Перемещение системных баз данных и Перемещение пользовательских баз данных. Не используйте при обычной работе.

3625

Ограничивает объем сведений, возвращаемый пользователям, которые не являются членами предопределенной роли сервера sysadmin, маскируя параметры некоторых сообщений об ошибках символами «******». Это поможет предотвратить раскрытие конфиденциальных сведений.

Область: только глобальная.

4199

Управляет несколькими изменениями оптимизатора запросов, внесенными ранее с несколькими флагами трассировки. Дополнительные сведения см. в статье Служба технической поддержки Майкрософт.

Область: глобальная или сеанс.

4616

Делает метаданные уровня сервера видимыми ролям приложений. В SQL Server роль приложения не может получать доступ к метаданным за пределами собственной базы данных, так как роли приложений не связаны с участником уровня сервера. Это поведение было изменено по сравнению с предыдущими версиями SQL Server. Установка этого глобального флага отключает новые ограничения и позволяет ролям приложений получать доступ к метаданным уровня сервера.

Область: только глобальная.

6527

Отключается создание дампа памяти при первом возникновении исключения «Нехватка памяти» при интеграции со средой CLR. По умолчанию SQL Server создает небольшой дамп памяти при первом возникновении исключения «Нехватка памяти» в CLR. Режим работы флага трассировки следующий.

  • Если используется как флаг трассировки при запуске, то дамп памяти никогда не создается. Однако если используются другие флаги трассировки, то дамп памяти может быть создан.

  • Если этот флаг трассировки включен на запущенном сервере, то дамп памяти будет автоматически создан, начиная с этой точки. Однако если дамп памяти был уже создан из-за возникновения исключения, связанного с нехваткой памяти, в CLR, то этот флаг трассировки никак не повлияет на работу системы.

Область: только глобальная.

7806

Включает применение выделенных административных соединений (DAC) в SQL Server Express. По умолчанию ресурсы приложения уровня данных не зарезервированы в SQL Server Express. Дополнительные сведения см. в разделе Диагностическое соединение для администраторов баз данных.

Область: только глобальная.

8032

Восстанавливает параметры предела кэша до значения в RTM-версии SQL Server 2005, что обычно позволяет увеличить размер кэша. Используйте этот параметр, если часто используемые повторно элементы кэша не помещаются в кэш и в Параметр конфигурации сервера «optimize for ad hoc workloads» не удалось разрешить эту проблему с помощью кэша планов.

Предупреждение

Применение флага трассировки 8032 может привести к снижению производительности, если увеличение кэша приводит к уменьшению объема памяти, доступной для других потребителей памяти, например для буферного пула.

8207

Включает одноэлементные обновления для репликации транзакций. Обновления для подписчиков можно реплицировать как пары инструкций DELETE и INSERT. Это может не удовлетворять бизнес-правилам, например для срабатывания триггера UPDATE. С флагом трассировки 8207 обновление в уникальном столбце, затрагивающее только одну строку (одноэлементное обновление), реплицируется как инструкция UPDATE, а не как пара инструкций DELETE и INSERT. Если обновление затрагивает столбец, для которого существует ограничение уникальности, или если обновление затрагивает несколько строк, то обновление будет реплицировано как пара инструкций DELETE и INSERT.

9485

Запрет разрешения SELECT для DBCC SHOW_STATISTICS.

Замечания

В SQL Server существуют два типа флагов трассировки: для сеанса и глобальный. Флаги трассировки сеанса действуют во время данного соединения и доступны только для этого соединения. Глобальные флаги трассировки устанавливаются на уровне сервера и доступны для каждого соединения с этим сервером. Некоторые флаги могут быть включены только как глобальные, а некоторые и как глобальные, и как для сеанса.

Применяются следующие правила.

  • Глобальный флаг трассировки должен быть включен глобально. В противном случае, флаг трассировки не повлияет на работу сервера. Рекомендуется включать глобальные флаги трассировки при запуске с помощью параметра командной строки -T.

  • Если флаг трассировки может иметь или глобальную область, или область сеанса, он может быть включен с соответствующей областью. Флаг трассировки, включенный на уровне сеанса, никогда не влияет на другой сеанс, и действие флага трассировки прекращается, если SPID, открывший сеанс, выполняет выход.

Флаги трассировки устанавливаются и снимаются с помощью любого из следующих методов:

  • Использование команд DBCC TRACEON и DBCC TRACEOFF.

    Например, DBCC TRACEON 2528: Чтобы включить флаг трассировки глобально, используйте DBCC TRACEON с аргументом -1: DBCC TRACEON (2528, -1). Чтобы отключить флаг глобальной трассировки, используйте команду DBCC TRACEOFF с аргументом -1.

  • Использование параметра запуска -T для установки флага трассировки при запуске.

    Параметр запуска -T включает флаг трассировки глобально. Невозможно включить флаг трассировки уровня сеанса с помощью параметра запуска. Дополнительные сведения о параметрах запуска см. в разделе Параметры запуска службы Database Engine.

Использование команды DBCC TRACESTATUS для определения активных в данный момент флагов трассировки.

Примеры

В следующем примере флаг трассировки 3205 устанавливается с помощью команды DBCC TRACEON.

DBCC TRACEON (3205,-1);

См. также

Справочник

Типы данных (Transact-SQL)

DBCC INPUTBUFFER (Transact-SQL)

DBCC OUTPUTBUFFER (Transact-SQL)

DBCC TRACEOFF (Transact-SQL)

DBCC TRACEON (Transact-SQL)

DBCC TRACESTATUS (Transact-SQL)

EXECUTE (Transact-SQL)

SELECT (Transact-SQL)

SET NOCOUNT (Transact-SQL)