Поделиться через


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

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

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

ПримечаниеПримечание

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

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

Описание

260

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

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

1204

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

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

1211

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

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

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

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

1222

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

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

1224

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

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

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

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

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

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

2528

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

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

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

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

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. Дополнительные сведения см. в разделе Использование выделенного административного соединения.

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

Замечания

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

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

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

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

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

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

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

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

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

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

Изменения поведения

В SQL Server 2000 достаточно простой инструкции DBCC TRACEON (1204), чтобы включить запись взаимоблокировок в журнал ошибок. В SQL Server 2008 необходимо включить флаг глобально, так как флаг уровня сеанса невидим потоку монитора взаимоблокировок.

Дополнительные сведения об изменениях поведения см. в разделе Критические изменения в функциях компонента Database Engine в SQL Server 2008 R2.

Примеры

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

DBCC TRACEON (3205,-1)

Журнал изменений

Обновленное содержимое

Добавлен флаг трассировки 4199.