Флаги трассировки (Transact-SQL)
Флаги трассировки используются для временной установки определенных характеристик сервера или отключения определенного режима. Например, если флаг трассировки 3205 установлен при запуске экземпляра SQL Server, то отключается режим аппаратного сжатия для ленточных накопителей. Флаги трассировки часто используются для диагностики проблем, связанных с производительностью, отладки хранимых процедур или сложных компьютерных систем.
В следующей таблице перечислены и описаны флаги трассировки, доступные в SQL Server.
Примечание |
---|
Поведение флага трассировки может не поддерживаться в следующих версиях SQL Server. |
Флаг трассировки |
Описание |
||
---|---|---|---|
260 |
Выводит сведения о версиях динамически загружаемых библиотек (DLL) расширенных хранимых процедур. Дополнительные сведения о функции __GetXpVersion() см. в разделе Создание расширенных хранимых процедур. Область: глобальная или сеанса |
||
1204 |
Возвращает ресурсы и типы блокировки, участвующие во взаимоблокировке и текущую команду, на которую влияет взаимоблокировка. Область:только глобальная. |
||
1211 |
Отключает укрупнение блокировки, основанное на слишком активном использовании памяти или на количестве блокировок. Компонент Компонент SQL Server Database Engine не будет повышать уровень блокировки с блокировки строки или страницы до блокировки таблицы. При использовании этого флага трассировки может быть создано излишнее количество блокировок. Это может привести к снижению производительности компонента Компонент Database Engine или вызвать ошибки 1204 (невозможность выделить блокированный ресурс) из-за недостатка памяти Если установлены оба флага трассировки 1211 и 1224, то флаг 1211 имеет более высокий приоритет. Однако, так как флаг трассировки 1211 препятствует укрупнению во всех случаях, даже при слишком активном использовании памяти, рекомендуется использовать флаг 1224. Это помогает избежать ошибок «отсутствия блокировок» при использовании большого числа блокировок. Область: глобальная или сеанс. |
||
1222 |
Возвращает ресурсы и типы блокировок, участвующих во взаимоблокировке, а также текущую команду, на которую влияет взаимоблокировка, в формате XML, не соответствующем ни одной XSD-схеме. Область: только глобальная. |
||
1224 |
Отключает укрупнение блокировок на основе количества блокировок. Однако слишком активное использование памяти может включить укрупнение блокировок. Компонент Компонент Database Engine укрупняет блокировки строк или страниц до блокировок таблиц (или секций), если объем памяти, используемый блокированными объектами, превышает одно из следующих условий.
Если установлены оба флага трассировки 1211 и 1224, то флаг 1211 имеет более высокий приоритет. Однако, так как флаг трассировки 1211 препятствует укрупнению во всех случаях, даже при слишком активном использовании памяти, рекомендуется использовать флаг 1224. Это помогает избежать ошибок «отсутствия блокировок» при использовании большого числа блокировок.
Область: глобальная или сеанса |
||
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. Если инициируются действия, для которых требуется tempdb, то модель восстанавливается, и создается tempdb. Пользовательские базы данных запускаются и восстанавливаются при доступе к ним. Могут не работать некоторые функции, например изоляция моментального снимка и изоляция зафиксированной операции чтения с моментальным снимком. Используйте для следующих целей: Перемещение системных баз данных и Перемещение пользовательских баз данных. Не используйте при обычной работе. |
||
3625 |
Ограничивает объем сведений, возвращаемый пользователям, которые не являются членами предопределенной роли сервера sysadmin, маскируя параметры некоторых сообщений об ошибках символами «******». Это поможет предотвратить раскрытие конфиденциальных сведений. Область: только глобальная. |
||
4199 |
Управляет несколькими изменениями оптимизатора запросов, внесенными ранее с несколькими флагами трассировки. Дополнительные сведения см. в статье Служба технической поддержки Майкрософт. Область: глобальная или сеанс. |
||
4616 |
Делает метаданные уровня сервера видимыми ролям приложений. В SQL Server роль приложения не может получать доступ к метаданным за пределами собственной базы данных, так как роли приложений не связаны с участником уровня сервера. Это поведение было изменено по сравнению с предыдущими версиями SQL Server. Установка этого глобального флага отключает новые ограничения и позволяет ролям приложений получать доступ к метаданным уровня сервера. Область: только глобальная. |
||
6527 |
Отключается создание дампа памяти при первом возникновении исключения «Нехватка памяти» при интеграции со средой CLR. По умолчанию SQL Server создает небольшой дамп памяти при первом возникновении исключения «Нехватка памяти» в CLR. Режим работы флага трассировки следующий.
Область: только глобальная. |
||
7806 |
Включает применение выделенных административных соединений (DAC) в SQL Server Express. По умолчанию ресурсы приложения уровня данных не зарезервированы в SQL Server Express. Дополнительные сведения см. в разделе Диагностическое соединение для администраторов баз данных. Область: только глобальная. |
||
8032 |
Восстанавливает параметры предела кэша до значения в RTM-версии SQL Server 2005, что обычно позволяет увеличить размер кэша. Используйте этот параметр, если часто используемые повторно элементы кэша не помещаются в кэш и в Параметр конфигурации сервера «optimize for ad hoc workloads» не удалось разрешить эту проблему с помощью кэша планов.
|
||
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)
См. также
Справочник
DBCC INPUTBUFFER (Transact-SQL)
DBCC OUTPUTBUFFER (Transact-SQL)