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


Параметры ALTER DATABASE SET (Transact SQL)

Задает параметры базы данных в Microsoft SQL Server, База данных SQL Azure и Azure Synapse Analytics. Для других опций ALTER DATABASE см. ALTER DATABASE.

Note

Для настройки некоторых параметров с помощью ALTER DATABASE может потребоваться эксклюзивный доступ к базе данных. Если инструкция ALTER DATABASE не выполняется своевременно, проверьте, блокируют ли другие сеансы в базе данных.

Дополнительные сведения о соглашениях о синтаксисе см. в статье Соглашения о синтаксисе в Transact-SQL.

Выбор продукта

В следующей строке выберите имя продукта, который вас интересует. На этой веб-странице отобразится другой контент, относящийся к выбранному продукту.

* SQL Server *  

 

SQL Server

Зеркальное отображение базы данных, группы доступности AlwaysOn и уровни совместимости являются SET вариантами, но описаны в отдельных статьях из-за их длины. Дополнительные сведения см. в статьях Зеркальное отображение базы данных ALTER DATABASE (Transact-SQL), ALTER DATABASE (Transact-SQL) SET HADR и Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).

Конфигурации уровня базы данных используются для задания нескольких конфигураций базы данных на уровне отдельных баз данных. Дополнительные сведения см. в статье ALTER DATABASE SCOPED CONFIGURATION.

Note

Многие опции набора базы данных можно настроить для текущей сессии с помощью операторов SET , и часто они настраиваются приложениями при их соединении. Параметры инструкции SET уровня сеанса переопределяют значения ALTER DATABASE SET. Описанные в следующих разделах параметры базы данных являются значениями, которые можно задавать для сеансов, не предоставляющих явно другие значения параметра SET.

Syntax

ALTER DATABASE { database_name | CURRENT }
SET
{
    <option_spec> [ ,...n ] [ WITH <termination> ]
}

<option_spec> ::=
{
    <accelerated_database_recovery>
  | <auto_option>
  | <automatic_tuning_option>
  | <change_tracking_option>
  | <containment_option>
  | <cursor_option>
  | <data_retention_policy>
  | <database_mirroring_option>
  | <date_correlation_optimization_option>
  | <db_encryption_option>
  | <db_state_option>
  | <db_update_option>
  | <db_user_access_option>
  | <delayed_durability_option>
  | <external_access_option>
  | FILESTREAM ( <FILESTREAM_option> )
  | <HADR_options>
  | <mixed_page_allocation_option>
  | <optimized_locking>
  | <parameterization_option>
  | <query_store_options>
  | <recovery_option>
  | <remote_data_archive_option>
  | <persistent_log_buffer_option>
  | <service_broker_option>
  | <snapshot_option>
  | <sql_option>
  | <suspend_for_snapshot_backup>
  | <target_recovery_time_option>
  | <termination>
  | <temporal_history_retention>
}
;

<accelerated_database_recovery> ::=
{
    ACCELERATED_DATABASE_RECOVERY = { ON | OFF }
     [ ( PERSISTENT_VERSION_STORE_FILEGROUP = { filegroup name } ) ]
}

<auto_option> ::=
{
    AUTO_CLOSE { ON | OFF }
  | AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
  | AUTO_SHRINK { ON | OFF }
  | AUTO_UPDATE_STATISTICS { ON | OFF }
  | AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}

<automatic_tuning_option> ::=
{
    AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}

<change_tracking_option> ::=
{
    CHANGE_TRACKING
   {
       = OFF
     | = ON [ ( <change_tracking_option_list > [,...n] ) ]
     | ( <change_tracking_option_list> [,...n] )
   }
}

<change_tracking_option_list> ::=
{
   AUTO_CLEANUP = { ON | OFF }
 | CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}

<containment_option> ::=
   CONTAINMENT = { NONE | PARTIAL }

<cursor_option> ::=
{
    CURSOR_CLOSE_ON_COMMIT { ON | OFF }
  | CURSOR_DEFAULT { LOCAL | GLOBAL }
}

<database_mirroring_option>
  ALTER DATABASE Database Mirroring

<date_correlation_optimization_option> ::=
    DATE_CORRELATION_OPTIMIZATION { ON | OFF }

<db_encryption_option> ::=
    ENCRYPTION { ON | OFF | SUSPEND | RESUME }

<db_state_option> ::=
    { ONLINE | OFFLINE | EMERGENCY }

<db_update_option> ::=
    { READ_ONLY | READ_WRITE }

<db_user_access_option> ::=
    { SINGLE_USER | RESTRICTED_USER | MULTI_USER }

<delayed_durability_option> ::=
    DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }

<external_access_option> ::=
{
    DB_CHAINING { ON | OFF }
  | TRUSTWORTHY { ON | OFF }
  | DEFAULT_FULLTEXT_LANGUAGE = { <lcid> | <language name> | <language alias> }
  | DEFAULT_LANGUAGE = { <lcid> | <language name> | <language alias> }
  | NESTED_TRIGGERS = { OFF | ON }
  | TRANSFORM_NOISE_WORDS = { OFF | ON }
  | TWO_DIGIT_YEAR_CUTOFF = { 1753, ..., 2049, ..., 9999 }
}

<FILESTREAM_option> ::=
{
    NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL
  | DIRECTORY_NAME = <directory_name>
}

<HADR_options> ::=
    ALTER DATABASE SET HADR

<mixed_page_allocation_option> ::=
    MIXED_PAGE_ALLOCATION { OFF | ON }

<parameterization_option> ::=
    PARAMETERIZATION { SIMPLE | FORCED }

<query_store_options> ::=
{
    QUERY_STORE
    {
          = OFF [ ( FORCED ) ]
        | = ON [ ( <query_store_option_list> [,...n] ) ]
        | ( < query_store_option_list> [,...n] )
        | CLEAR [ ALL ]
    }
}

<query_store_option_list> ::=
{
      OPERATION_MODE = { READ_WRITE | READ_ONLY }
    | CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
    | DATA_FLUSH_INTERVAL_SECONDS = number
    | MAX_STORAGE_SIZE_MB = number
    | INTERVAL_LENGTH_MINUTES = number
    | SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
    | QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
    | MAX_PLANS_PER_QUERY = number
    | WAIT_STATS_CAPTURE_MODE = { ON | OFF }
    | QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}

<query_capture_policy_option_list> :: =
{
      STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
    | EXECUTION_COUNT = number
    | TOTAL_COMPILE_CPU_TIME_MS = number
    | TOTAL_EXECUTION_CPU_TIME_MS = number
}

<recovery_option> ::=
{
    RECOVERY { FULL | BULK_LOGGED | SIMPLE }
  | TORN_PAGE_DETECTION { ON | OFF }
  | PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
}

<remote_data_archive_option> ::=
{
    REMOTE_DATA_ARCHIVE =
    {
        ON ( SERVER = <server_name>,
             {
                  CREDENTIAL = <db_scoped_credential_name>
                  | FEDERATED_SERVICE_ACCOUNT = ON | OFF
             }
        )
        | OFF
    }
}

<persistent_log_buffer_option> ::=
{
    PERSISTENT_LOG_BUFFER 
    {
          = ON (DIRECTORY_NAME= 'path-to-directory-on-a-DAX-volume')
        | = OFF
    }
}

<service_broker_option> ::=
{
    ENABLE_BROKER
  | DISABLE_BROKER
  | NEW_BROKER
  | ERROR_BROKER_CONVERSATIONS
  | HONOR_BROKER_PRIORITY { ON | OFF }
}

<snapshot_option> ::=
{
    ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
  | READ_COMMITTED_SNAPSHOT { ON | OFF }
  | MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT = { ON | OFF }
}

<sql_option> ::=
{
    ANSI_NULL_DEFAULT { ON | OFF }
  | ANSI_NULLS { ON | OFF }
  | ANSI_PADDING { ON | OFF }
  | ANSI_WARNINGS { ON | OFF }
  | ARITHABORT { ON | OFF }
  | COMPATIBILITY_LEVEL = { 170 | 160 | 150 | 140 | 130 | 120 | 110 | 100 }
  | CONCAT_NULL_YIELDS_NULL { ON | OFF }
  | NUMERIC_ROUNDABORT { ON | OFF }
  | QUOTED_IDENTIFIER { ON | OFF }
  | RECURSIVE_TRIGGERS { ON | OFF }
}

<suspend_for_snapshot_backup> ::=
    SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF } [ ( MODE = COPY_ONLY ) ]

<target_recovery_time_option> ::=
    TARGET_RECOVERY_TIME = target_recovery_time { SECONDS | MINUTES }

<termination>::=
{
    ROLLBACK AFTER number [ SECONDS ]
  | ROLLBACK IMMEDIATE
  | NO_WAIT
}

<temporal_history_retention> ::=
    TEMPORAL_HISTORY_RETENTION { ON | OFF }

<data_retention_policy> ::=
    DATA_RETENTION { ON | OFF }

<optimized_locking> ::=
{
    OPTIMIZED_LOCKING = { ON | OFF }
}

Arguments

database_name

Имя изменяемой базы данных.

CURRENT

Применимо к: SQL Server (начиная с SQL Server 2012 (11.x))

Выполняет действие в текущей базе данных. CURRENT работает не со всеми параметрами и не во всех контекстах. Если CURRENT не работает, укажите имя базы данных.

< > accelerated_database_recovery ::=

Относится к: SQL Server (начиная с SQL Server 2019 (15.x))

Включает ускоренное восстановление базы данных (ADR). ADR по умолчанию имеет значение OFF в SQL Server 2019 (15.x) и более поздних версий. С помощью этого синтаксиса можно назначить определенную файловую группу для данных хранилища постоянных версий (PVS). Если файловая группа не указана, PVS использует PRIMARY файловую группу. Дополнительные сведения см. в статье Управление ускорением восстановления базы данных.

Чтобы задать ACCELERATED_DATABASE_RECOVERY ON или OFF, активные подключения к базе данных не должны быть, кроме подключения, выполняемого командой ALTER DATABASE. Однако это не означает, что база данных должна находиться в однопользовательском режиме. Вы не можете изменить состояние этого параметра, если база данных не имеет значение ONLINE.

< > auto_option ::=

Управляет автоматическими параметрами.

AUTO_CLOSE { ON | OFF }

  • ON

    База данных закрыта правильно, а ее ресурсы освобождены после выхода последнего пользователя.

    База данных автоматически открывается, если пользователь снова пытается подключиться к ней. Например, это поведение возникает, когда пользователь выдает инструкцию USE database_name. База данных может завершить работу с AUTO_CLOSE включено. Если это так, база данных не открывается, пока пользователь не пытается использовать базу данных при следующем перезапуске ядра СУБД.

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

  • OFF

    База данных остается открытой после того, как последний пользователь вышел.

    Параметр AUTO_CLOSE полезен для настольных баз данных, поскольку он позволяет управлять файлами базы данных так же, как обычными файлами. Они могут быть перемещены, скопированы для создания резервной копии или даже отосланы по электронной почте другим пользователям. AUTO_CLOSE — это асинхронный процесс. Многократное открытие и закрытие базы данных не влияет на производительность.

Note

Параметр AUTO_CLOSE недоступен в автономной базе данных или в База данных SQL. Вы можете определить статус этой опции, изучив is_auto_close_on столбец в каталоге sys.databases или IsAutoClose свойство функции DATABASEPROPERTYEX .

Когда AUTO_CLOSE установлено в ON, некоторые столбцы в представлении каталога sys.databases и функции DATABASEPROPERTYEX возвращают NULL, поскольку база данных недоступна для получения данных. Для решения этой проблемы выполните инструкцию USE, чтобы открыть базу данных.

Для зеркального отображения базы данных требуется, чтобы для параметра AUTO_CLOSE было установлено значение OFF.

Если для базы данных задано AUTOCLOSE = ONзначение, операция, инициирующая автоматическое завершение работы базы данных, очищает кэш планов для экземпляра SQL Server. Очистка кэша планов становится причиной перекомпиляции всех последующих планов выполнения и приводит к непредвиденному временному снижению производительности обработки запросов. Начиная с SQL Server 2005 (9.x) с пакетом обновления 2 (SP2) для каждого очищаемого хранилища кэша в кэше плана, журнал ошибок SQL Server содержит следующее информационное сообщение: SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations Это сообщение добавляется в журнал каждые пять минут при сбросе кэша в течение этого интервала времени.

Параметр AUTO_CLOSE может быть полезной функцией в некоторых редких ситуациях, например, в экземпляре SQL Server без достаточного объема памяти для стабильной работы с большим количеством баз данных или для устаревшего 32-разрядного экземпляра SQL Server с большим количеством баз данных. В таких сценариях может быть полезно включить AUTO_CLOSE и сохранить ресурсы памяти, необходимые для обеспечения открытой базы данных, если приложение не использует базу данных. Когда база данных открыта, требуются некоторые выделения памяти по умолчанию (например, внутренние структуры для представления различных объектов метаданных базы данных и буферов журнала транзакций).

AUTO_CREATE_STATISTICS { ON | OFF }

  • ON

    Оптимизатор запросов в случае необходимости создает статистику по отдельным столбцам в предикатах запросов, чтобы улучшить планы запросов и повысить производительность запросов. Такая статистика по отдельным столбцам создается, когда оптимизатор запросов компилирует запросы. Статистика по отдельным столбцам создается только для столбцов, ни один из которых не является первым столбцом в существующем объекте статистики.

    Значение по умолчанию — ON. Для большинства баз данных рекомендуется использовать значение по умолчанию.

  • OFF

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

Вы можете определить статус этой опции, изучив столбец is_auto_create_stats_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAutoCreateStatistics свойство функции DATABASEPROPERTYEX .

Для получения дополнительной информации см. раздел «Использование параметров статистики по всей базе данных» в разделе Статистика.

INCREMENTAL = ON | ОТ

Применимо к: SQL Server (начиная с SQL Server 2014 (12.x)) и Azure SQL Database

Присваивает AUTO_CREATE_STATISTICS значение ON, а INCREMENTAL — значение ON. Он создает автоматически создаваемые статистики как добавочные везде, где поддерживаются добавочные статистики. Значение по умолчанию — OFF. Дополнительные сведения см. в статье CREATE STATISTICS.

AUTO_SHRINK { ON | OFF }

  • ON

    Файлы базы данных являются кандидатами на периодическое сжатие. Если у вас нет определенного требования, не устанавливайте параметр базы данных AUTO_SHRINK значение ON. Дополнительные сведения см. в разделе Сжатие базы данных.

    И файлы данных, и файлы журналов могут быть автоматически сжаты. AUTO_SHRINK уменьшает размер журнала транзакций только в том случае, если вы выбрали простую модель восстановления базы данных или создали резервную копию журнала. Если параметр AUTO_SHRINK задан как OFF, файлы базы данных не будут автоматически сжиматься при периодической проверке на неиспользуемое пространство.

    При включенном параметре AUTO_SHRINK файлы будут сжаты, если более 25 процентов файла содержат неиспользуемое пространство. Он сжимает файл до одного из двух размеров (в зависимости от того, какое значение больше):

    • размер, при котором 25 процентов файла не используется;
    • размер файла при его создании.

    Нельзя сжать базу данных, находящуюся в состоянии только для чтения.

  • OFF

    Файлы базы данных не будут автоматически сжаты во время периодических проверок неиспользуемого пространства.

Вы можете определить статус этой опции, изучив столбец is_auto_shrink_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAutoShrink свойство функции DATABASEPROPERTYEX .

Note

В автономной базе данных параметр AUTO_SHRINK недоступен.

AUTO_UPDATE_STATISTICS { ON | OFF }

  • ON

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

    Оптимизатор запросов проверяет наличие устаревшей статистики перед компиляцией запроса и выполняет кэшированный план запроса. Оптимизатор запросов с помощью столбцов, таблиц и индексированных представлений в предикате запроса определяет, какая статистика могла устареть. Оптимизатор запросов определяет эти сведения перед компиляцией запроса. Перед запуском кэшированного плана запроса ядро СУБД проверяет, ссылается ли план запроса на актуальную статистику.

    Параметр AUTO_UPDATE_STATISTICS применяется к статистике, создаваемой для индексов и отдельных столбцов в предикатах запросов, и к статистике, создаваемой инструкцией CREATE STATISTICS. Этот параметр также применяется к отфильтрованной статистике.

    Значение по умолчанию — ON. Для большинства баз данных рекомендуется использовать значение по умолчанию.

    Используйте параметр AUTO_UPDATE_STATISTICS_ASYNC, чтобы указать режим обновления статистики: синхронный или асинхронный.

  • OFF

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

Вы можете определить статус этой опции, изучив столбец is_auto_update_stats_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAutoUpdateStatistics свойство функции DATABASEPROPERTYEX .

Для получения дополнительной информации см. раздел «Использование параметров статистики по всей базе данных» в разделе Статистика.

AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

  • ON

    Указывает, что обновление статистики для параметра AUTO_UPDATE_STATISTICS выполняется асинхронно. Оптимизатор запросов не ожидает завершения обновления статистики перед компиляцией запросов.

    Установка этого параметра в состояние ON не будет иметь эффекта, если параметр AUTO_UPDATE_STATISTICS не установлен в состояние ON.

    По умолчанию параметр AUTO_UPDATE_STATISTICS_ASYNC имеет значение OFF, а оптимизатор запросов обновляет статистику в синхронном режиме.

  • OFF

    Указывает, что обновление статистики для параметра AUTO_UPDATE_STATISTICS выполняется синхронно. Оптимизатор запросов ожидает завершения обновления статистики перед компиляцией запросов.

    Note

    Установка этого параметра в значение OFF не будет иметь эффекта, если параметр AUTO_UPDATE_STATISTICS не установлен в значение ON.

Вы можете определить статус этой опции, изучив столбец is_auto_update_stats_async_on в каталоге sys.databases .

Для получения дополнительной информации, описывающей использование синхронных или асинхронных обновлений статистики, смотрите раздел «Статистические опции» в разделе Статистика.

< > automatic_tuning_option ::=

Применимо к: SQL Server (начиная с SQL Server 2017 (14.x))

Включает или отключает FORCE_LAST_GOOD_PLANопцию автоматической настройки . Состояние этого параметра можно просмотреть в представлении sys.database_automatic_tuning_options.

FORCE_LAST_GOOD_PLAN = { ПО УМОЛЧАНИЮ | НА | OFF }

  • DEFAULT

    Значение по умолчанию для SQL Server — OFF.

  • ON

    Ядро СУБД автоматически включает последний известный удачный план для Transact-SQL запросов, когда новый план запроса приводит к снижению производительности. Ядро СУБД непрерывно отслеживает производительность запроса Transact-SQL в форсированном плане.

    При наличии повышения производительности ядро СУБД продолжает использовать последний известный хороший план. Если повышение производительности не обнаружено, ядро СУБД создает новый план запроса. Оператор не работает, если Хранилище запросов не включено или если Хранилище запросов не находится в режиме чтения-записи .

  • OFF

    Движок базы данных сообщает о возможных регрессиях производительности запросов, вызванных изменениями плана запросов в sys.dm_db_tuning_recommendations представлении. Однако эти рекомендации не применяются автоматически. Пользователь может отслеживать активные рекомендации и устранять выявленные проблемы, применяя сценарии Transact-SQL, которые отображаются в представлении. Значение по умолчанию — OFF.

< > change_tracking_option ::=

Применимо к: SQL Server и Azure SQL Database

Определяет параметры отслеживания изменений. Отслеживание изменений можно включить или отключить, а также установить или изменить параметры. Примеры см. раздел «Примеры » позже в этой статье.

  • ON

    Включает отслеживание изменений для базы данных. При включении отслеживания изменений также необходимо задать параметры AUTO CLEANUP и CHANGE RETENTION.

  • AUTO_CLEANUP = { ON | OFF }

    • ON

      Данные отслеживания изменений автоматически удаляются по истечении заданного срока хранения.

    • OFF

      Данные отслеживания изменений не удаляются из базы данных автоматически.

  • CHANGE_RETENTION = retention_period { ДНИ | ЧАСЫ | МИНУТЫ }

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

    retention_period — целое число, задающее числовую компоненту периода удержания.

    Срок хранения по умолчанию составляет 2 дня. Минимальный срок хранения составляет 1 минуту. Стандартный тип удержания — DAYS.

  • Значение OFF отключает отслеживание изменений для базы данных. Перед отключением отслеживания изменений для базы данных предварительно отключите отслеживание изменений для всех таблиц.

< > containment_option ::=

Применимо к: SQL Server (начиная с SQL Server 2012 (11.x))

Управляет параметрами автономной работы базы данных.

СДЕРЖИВАНИЕ = { НЕТ | ЧАСТИЧНО}

  • NONE

    База данных не является автономной.

  • PARTIAL

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

< > cursor_option ::=

Управляет параметрами курсора.

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

  • ON

    Любые курсоры, открытые при фиксации или откате транзакции, закрываются.

  • OFF

    Курсоры остаются открытыми при фиксации транзакции; откат транзакции закрывает все курсоры, за исключением курсоров, определенных как INSENSITIVE или STATIC.

Настройки уровня соединения, которые установлены с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для CURSOR_CLOSE_ON_COMMIT. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая CURSOR_CLOSE_ON_COMMIT в значение OFF для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. SET CURSOR_CLOSE_ON_COMMIT.

Вы можете определить статус этой опции, изучив is_cursor_close_on_commit_on столбец в каталоге sys.databases или IsCloseCursorsOnCommitEnabled свойство функции DATABASEPROPERTYEX .

CURSOR_DEFAULT { LOCAL | ГЛОБАЛЬНЫЙ }

Область применения: SQL Server

Управляет тем, какую область (LOCAL или GLOBAL) использует курсор.

  • LOCAL

    Когда вы указываете область LOCAL и не определяете курсор как GLOBAL при его создании, область действия курсора является локальной. В частности, область действия является локальной по отношению к пакету, хранимой процедуре или триггеру, в котором вы создали курсор. Имя курсора действительно только внутри этой области.

    На курсор могут ссылаться локальные переменные пакета, хранимые процедуры, триггеры или выходной параметр хранимой процедуры. Курсор будет неявно освобожден при завершении пакета, хранимой процедуры или триггера. Курсор освобождается, если он не был передан обратно в параметре OUTPUT. Курсор может передаваться обратно в параметре OUTPUT. Если курсор передается таким образом, он будет освобожден, когда последняя переменная, которая ссылается на него, будет освобождена или выйдет из области.

  • GLOBAL

    Если параметр GLOBAL задан и курсор во время создания не определен как LOCAL, то область курсора глобальна относительно соединения. Имя курсора может использоваться любой хранимой процедурой или пакетом, которые выполняются в соединении.

    Курсор неявно освобождается только при отключении. Для получения дополнительной информации см. DECLARE CURSOR.

Вы можете определить статус этой опции, изучив столбец is_local_cursor_default в каталоге sys.databases . Вы также можете определить статус, изучив IsLocalCursorsDefault свойство функции DATABASEPROPERTYEX .

< > temporal_history_retention ::=

TEMPORAL_HISTORY_RETENTION { ON | OFF }

По умолчанию используется флаг ON, но после операции восстановления на определенный момент времени автоматически устанавливается флаг OFF. Дополнительные сведения о том, как включить этот параметр, см. в разделе Настройка политики хранения.

< > data_retention_policy ::=

Применяется: только Azure SQL Edge.

DATA_RETENTION { ON | OFF }

  • ON

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

  • OFF

    Отключает очистку базы данных на основе политики хранения данных.

<database_mirroring>

Область применения: SQL Server

Описания аргументов см. в статье Зеркальное отображение базы данных ALTER DATABASE (Transact-SQL).

< > date_correlation_optimization_option ::=

Область применения: SQL Server

Управляет параметром date_correlation_optimization.

DATE_CORRELATION_OPTIMIZATION { ON | OFF }

  • ON

    SQL Server ведёт статистику корреляции, где ограничение FOREIGN KEY связывает любые две таблицы в базе данных, а таблицы имеют столбцы datetime .

    Включение DATE_CORRELATION_OPTIMIZATION увеличивает площадь поверхности атаки при восстановлении ненадёжного резервного копирования , когда оптимизатор выполняет объекты с повышенными правами.

  • OFF

    Статистика корреляции не поддерживается.

Для установки параметра DATE_CORRELATION_OPTIMIZATION в состояние ON не должно быть активных соединений с базой данных (за исключением соединения, в котором выполняется инструкция ALTER DATABASE). Впоследствии возможность нескольких соединений будет поддерживаться.

Текущие настройки этой опции можно определить, изучив столбец is_date_correlation_on в каталоге sys.databases .

< > db_encryption_option ::=

Определяет параметры шифрования базы данных.

ENCRYPTION { ON | OFF | ПРИОСТАНОВКА | РЕЗЮМЕ }

  • ON

    Включает шифрование базы данных.

  • OFF

    Отключает шифрование базы данных.

  • SUSPEND

    Относится к: SQL Server (начиная с SQL Server 2019 (15.x))

    Можно использовать для приостановки проверки шифрования после включения или отключения прозрачного шифрования или после изменения ключа шифрования.

  • RESUME

    Относится к: SQL Server (начиная с SQL Server 2019 (15.x))

    Позволяет возобновить ранее приостановленное сканирование шифрования.

Дополнительные сведения о шифровании баз данных см. в прозрачного шифрования данных (TDE) и прозрачного шифрования данных для базы данных SQL Azure, управляемого экземпляра SQL Azure и Azure Synapse Analytics.

Если шифрование включено на уровне базы данных, все группы файлов шифруются. Все новые группы файлов наследуют зашифрованное свойство. Если для любой группы файлов в базе данных задано значение READ ONLY, операция шифрования базы данных завершается ошибкой.

Вы можете увидеть состояние шифрования базы данных и состояние сканирования шифрования, используя sys.dm_database_encryption_keys динамическое управление.

< > db_state_option ::=

Область применения: SQL Server

Управляет состоянием базы данных.

  • OFFLINE

    База данных аккуратно закрыта и помечена как вне сети. В автономном режиме базу данных невозможно изменить.

  • ONLINE

    База данных открыта и доступна для использования.

  • EMERGENCY

    База данных помечена как READ_ONLY, ведение журнала отключено и доступ возможен только элементам предопределенной роли сервера sysadmin. EMERGENCY используется в основном для диагностики. Например, база данных, помеченная как подозрительная из-за поврежденного файла журнала, может быть переведена в состояние EMERGENCY. Таким образом, системный администратор может получить доступ к базе данных только для чтения. Только члены предопределенной роли сервера sysadmin могут перевести базу данных в состояние EMERGENCY.

Разрешение ALTER DATABASE для базы данных необходимо для перевода базы данных из режима "вне сети" в режим "аварийный", а разрешение ALTER ANY DATABASE на уровне сервера — для перевода базы данных из режима "вне сети" в режим "в сети".

Вы можете определить статус этой опции, изучив state столбцы и state_desc в каталоге sys.databases . Вы также можете определить статус, изучив Status свойство функции DATABASEPROPERTYEX . Дополнительные сведения см. в разделе Состояния базы данных.

База данных, находящаяся в состоянии RESTORING, не может быть переведена в состояние OFFLINE, ONLINE или EMERGENCY. База данных может находиться в состоянии RESTOREING во время активной операции восстановления или при сбое операции восстановления базы данных или файла журнала из-за поврежденного файла резервной копии.

< > db_update_option ::=

Управляет разрешениями на обновления базы данных.

  • READ_ONLY

    Пользователи могут считывать данные из базы данных, но не могут изменять их.

    Note

    Для улучшения производительности запросов выполните обновление статистики перед тем, как перевести базу данных в режим доступа READ_ONLY. Если после READ_ONLY базы данных требуется дополнительная статистика, ядро СУБД создает статистику в системной базе данных tempdb. Для получения дополнительной информации о статистике для базы данных только для чтения см. раздел Статистика.

  • READ_WRITE

    База данных доступна для операций чтения и записи.

Чтобы изменить это состояние, необходимо обладать монопольным доступом к базе данных. Дополнительные сведения см. в описании предложения SINGLE_USER.

Note

В База данных SQL Azure федеративных базах данных SET { READ_ONLY | READ_WRITE } отключен.

< > db_user_access_option ::=

Управляет пользовательским доступом к базе данных.

SINGLE_USER

Область применения: SQL Server

Указывает, что только один пользователь одновременно может обращаться к базе данных. Если указан параметр SINGLE_USER и заданы другие подключения пользователей к базе данных, инструкция ALTER DATABASE будет заблокирована, пока все пользователи не отключатся от указанной базы данных. Чтобы переопределить это поведение, см. описание предложения WITH <termination>.

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

Перед заданием параметра SINGLE_USER проверьте, чтобы параметру AUTO_UPDATE_STATISTICS_ASYNC было присвоено значение OFF. Если задано значение ON, фоновый поток, используемый для обновления статистики, принимает подключение к базе данных, и вы не можете получить доступ к базе данных в однопользовательском режиме. Чтобы увидеть статус этой опции, выполните запрос к is_auto_update_stats_async_on столбцу в каталоге sys.databases . Если параметр установлен в значение ON, выполните следующие действия.

  1. Установите AUTO_CREATE_STATISTICS_ASYNC в значение OFF.

  2. Проверьте активные асинхронные статистические задачи, запросив sys.dm_exec_background_job_queue динамический режим управления.

При наличии активных задач следует либо разрешить завершение задач, либо вручную отменить их при помощи инструкции KILL STATS JOB.

RESTRICTED_USER

Позволяет подключаться к базе данных только членам предопределенной роли базы данных db_owner и предопределенной роли сервера dbcreator и sysadmin. Параметр RESTRICTED_USER не ограничивает их количество. Отключите все соединения с базой данных на период времени, определяемый завершающим предложением инструкции ALTER DATABASE. После того как база данных перешла в состояние RESTRICTED_USER, попытки подключения пользователей, не соответствующими описанным выше условиям, будут отклонены.

MULTI_USER

Все пользователи, имеющие соответствующие разрешения на подключение к базе данных, будут допущены к базе данных. Вы можете определить статус этой опции, изучив столбец user_access в каталоге sys.databases . Вы также можете определить статус, изучив UserAccess свойство функции DATABASEPROPERTYEX .

< > delayed_durability_option ::=

Применимо к: SQL Server (начиная с SQL Server 2014 (12.x))

Управляет тем, является ли фиксация транзакций полностью устойчивой или отложенной устойчивой.

  • DISABLED

    Все транзакции, следующие за SET DISABLED, являются полностью устойчивыми. Все параметры устойчивости, заданные в блоке ATOMIC или инструкции COMMIT, не учитываются.

  • ALLOWED

    Все транзакции, следующие за SET ALLOWED, являются полностью устойчивыми или отложенными устойчивыми в зависимости от параметра устойчивости, заданного в блоке ATOMIC или инструкции COMMIT.

  • FORCED

    Все транзакции, следующие за SET FORCED, являются отложенными устойчивыми. Все параметры устойчивости, заданные в блоке ATOMIC или инструкции COMMIT, не учитываются.

< > external_access_option ::=

Область применения: SQL Server

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

DB_CHAINING { ON | OFF }

  • ON

    База данных может быть источником или целевой базой данных межбазовой цепочки владения.

  • OFF

    База данных не может быть членом межбазовой цепочки владения.

Important

Экземпляр SQL Server распознает этот параметр, если параметр сервера цепочки владения между базами данных имеет значение 0 (OFF). Если параметр cross db ownership chaining имеет значение 1 (ON), то все пользовательские базы данных могут участвовать в межбазовых цепочках владения, вне зависимости от значения этого параметра. Этот параметр задается с помощью процедуры sp_configure.

Для установки этого параметра требуется разрешение CONTROL SERVER для базы данных.

Параметр DB_CHAINING нельзя установить для системных баз данных master, model и tempdb.

Вы можете определить статус этой опции, изучив столбец is_db_chaining_on в каталоге sys.databases .

НАДЕЖНЫЙ { ON | OFF }

  • ON

    Модули базы данных (например, определяемые пользователем функции или хранимые процедуры), которые используют контекст олицетворения, могут обращаться к ресурсам, находящимся вне базы данных.

  • OFF

    Модули базы данных в контексте олицетворения не могут обращаться к ресурсам, находящимся вне базы данных.

    Параметр TRUSTWORTHY устанавливается в значение OFF при каждом присоединении базы данных.

По умолчанию для всех системных баз данных, кроме msdb, для параметра TRUSTWORTHY задано значение OFF. Это значение не может быть изменено для баз данных model и tempdb. Рекомендуется никогда не задавать значение ON для параметра TRUSTWORTHY базы данных master.

Для установки этого параметра требуется разрешение CONTROL SERVER для базы данных.

Вы можете определить статус этой опции, изучив столбец is_trustworthy_on в каталоге sys.databases .

DEFAULT_FULLTEXT_LANGUAGE

Применимо к: SQL Server (начиная с SQL Server 2012 (11.x))

Задает язык, используемый по умолчанию для полнотекстовых индексированных столбцов.

Important

Этот параметр допустим только в случае, если параметр CONTAINMENT равен PARTIAL. Если параметр CONTAINMENT имеет значение NONE, возникают ошибки.

DEFAULT_LANGUAGE

Применимо к: SQL Server (начиная с SQL Server 2012 (11.x))

Указывает язык, используемый по умолчанию для всех созданных имен входа. Чтобы задать язык, можно указать локальный идентификатор (lcid), название языка или псевдоним языка. Список допустимых названий и псевдонимов языка см. sys.syslanguages. Этот параметр допустим только в случае, если параметр CONTAINMENT равен PARTIAL. Если параметр CONTAINMENT имеет значение NONE, возникают ошибки.

NESTED_TRIGGERS

Применимо к: SQL Server (начиная с SQL Server 2012 (11.x))

Указывает, допустимо ли каскадирование триггеров AFTER, то есть выполнение действия, вызывающего срабатывание другого триггера, который может инициировать другой триггер и т. д. Этот параметр допустим только в случае, если параметр CONTAINMENT равен PARTIAL. Если параметр CONTAINMENT имеет значение NONE, возникают ошибки.

TRANSFORM_NOISE_WORDS

Применимо к: SQL Server (начиная с SQL Server 2012 (11.x))

Используется для подавления сообщения об ошибке, если логическая операция по полнотекстовому запросу не срабатывает из-за пропускаемых слов или стоп-слов. Этот параметр допустим только в случае, если параметр CONTAINMENT равен PARTIAL. Если параметр CONTAINMENT имеет значение NONE, возникают ошибки.

TWO_DIGIT_YEAR_CUTOFF

Применимо к: SQL Server (начиная с SQL Server 2012 (11.x))

Указывает целое число в промежутке от 1753 до 9999, представляющее пороговое значение года для преобразования двухзначной записи лет в четырехзначную. Этот параметр допустим только в случае, если параметр CONTAINMENT равен PARTIAL. Если параметр CONTAINMENT имеет значение NONE, возникают ошибки.

< > FILESTREAM_option ::=

Применимо к: SQL Server (начиная с SQL Server 2012 (11.x))

Управляет параметрами таблиц FileTables.

NON_TRANSACTED_ACCESS = { ВЫКЛ | READ_ONLY | ПОЛНЫЙ }

  • OFF

    Нетранзакционный доступ к данным таблиц FileTable отключен.

  • READ_ONLY

    Данные FILESTREAM из таблиц FileTable в этой базе данных могут считываться нетранзакционными процессами.

  • FULL

    Включает полный нетранзакционный доступ к данным FILESTREAM в таблицах FileTable.

DIRECTORY_NAME = <directory_name>

Имя каталога, совместимого с Windows. Это имя должно быть уникальным среди всех имен каталогов уровня базы данных в экземпляре SQL Server. Проверка уникальности выполняется без учета регистра, независимо от параметров сортировки. Этот параметр должен быть задан до создания таблицы FileTable в этой базе данных.

< > HADR_options ::=

Область применения: SQL Server

Дополнительные сведения см. в описании ALTER DATABASE SET HADR.

< > mixed_page_allocation_option ::=

Относится к: SQL Server (начиная с SQL Server 2016 (13.x))

Управляет возможностью базы данных создавать начальные страницы с использованием смешанного экстента для первых восьми страниц таблицы или индекса.

MIXED_PAGE_ALLOCATION { OFF | ON }

  • OFF

    База данных всегда создает начальные страницы с помощью однородных экстентов. OFF — значение по умолчанию.

  • ON

    База данных может создавать начальные страницы с помощью смешанных экстентов.

Этот параметр всегда включен для всех системных баз данных, кроме tempdb, где он всегда отключен. Параметр нельзя изменить для системных баз данных.

< > PARAMETERIZATION_option ::=

Управляет параметром параметризации. Дополнительные сведения о параметризации: Руководство по архитектуре обработки запросов.

ПАРАМЕТРИЗАЦИЯ { SIMPLE | ПРИНУДИТЕЛЬНО }

  • SIMPLE

    Запросы параметризуются на основании поведения базы данных по умолчанию.

  • FORCED

    SQL Server параметризирует все запросы в базе данных.

Текущие настройки этой опции можно определить, изучив столбец is_parameterization_forced в каталоге sys.databases .

< > query_store_options ::=

Относится к: SQL Server (начиная с SQL Server 2016 (13.x))

ON | OFF [ (ПРИНУДИТЕЛЬНО) ] | CLEAR [ ALL ]

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

  • ON

    Включает хранилище запросов.

    Многие новые функции производительности SQL Server 2022 (16.x), такие как хранилище запросов подсказки, отзывы CE, отзывы о параллелизме (DOP) и сохраняемость памяти (MGF), необходимые для включения хранилище запросов. Для баз данных, которые были восстановлены из других экземпляров SQL Server и для тех баз данных, которые обновляются с обновления на месте до SQL Server 2022 (16.x), эти базы данных сохраняют предыдущие параметры хранилища запросов. Если в хранилище запросов могут возникнуть проблемы, администраторы могут использовать пользовательские политики отслеживания с QUERY_CAPTURE_MODE = CUSTOM. Примеры того, как включить Хранилище запросов с настройками пользовательской политики захвата, смотрите раздел «Примеры » позже в этой статье.

  • OFF [ (ПРИНУДИТЕЛЬНО) ]

    Отключает хранилище запросов. ПРИНУДИТЕЛЬНОе выполнение является необязательным. FORCED прерывает все выполняющиеся фоновые задачи хранилища запросов и пропускает синхронный сброс, когда хранилище запросов отключается. Приводит к максимально быстрому завершению работы хранилища запросов. ПРИНУДИТЕЛЬНО применяется к SQL Server 2016 (13.x) с пакетом обновления 2 (SP2) CU14, SQL Server 2017 (14.x) CU21, SQL Server 2019 (15.x) и более поздним сборкам.

    Note

    Хранилище запросов нельзя отключить в базе данных SQL Azure. Выполнение ALTER DATABASE [database] SET QUERY_STORE = OFF возвращает предупреждение 'QUERY_STORE=OFF' is not supported in this version of SQL Server..

  • ЧИСТО [ ВСЕ ]

    Удаляет данные, связанные с запросами, из хранилища запросов. ALL является необязательным. ALL удаляет данные и метаданные, связанные с запросами, из хранилища запросов.

OPERATION_MODE { READ_ONLY | READ_WRITE }

Описывает режим работы хранилища запросов.

READ_WRITE

Хранилище запросов собирает и сохраняет план запроса и статистические данные о выполнении.

READ_ONLY

Можно считывать данные из хранилища запросов, но новые сведения не добавляются. Если максимальное выданное пространство хранилища запросов было исчерпано, хранилище запросов изменяет режим работы на READ_ONLY.

CLEANUP_POLICY

Описывает политику хранения данных хранилища запросов. STALE_QUERY_THRESHOLD_DAYS определяет количество дней хранения сведений о запросе в хранилище. STALE_QUERY_THRESHOLD_DAYS — это тип bigint. Значение по умолчанию — 30.

DATA_FLUSH_INTERVAL_SECONDS

Определяет частоту, с которой данные, записанные в хранилище запросов, сохраняются на диск. Для оптимизации производительности данные, собранные хранилищем запросов, асинхронно записываются на диск. Для настройки частоты этой асинхронной передачи используется аргумент DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS тип bigint. По умолчанию значение — 900 (15 мин).

MAX_STORAGE_SIZE_MB

Определяет свободное место, выделенное для хранилища запросов. MAX_STORAGE_SIZE_MB тип bigint. Значение по умолчанию — 100 МБ для SQL Server (SQL Server 2016 (13.x) по SQL Server 2017 (14.x)). Начиная с SQL Server 2019 (15.x), значение по умолчанию — 1000 МБ.

Ограничение MAX_STORAGE_SIZE_MB не применяется строго. Размер хранилища проверяется только в том случае, если хранилище запросов записывает данные на диск. Этот интервал задается параметром DATA_FLUSH_INTERVAL_SECONDS или параметром диалогового окна хранилища запросов Management Studio Интервал записи данных на диск. Значение по умолчанию — 900 секунд (или 15 минут).

Если хранилище запросов нарушило ограничение MAX_STORAGE_SIZE_MB между проверками размера хранилища, оно переходит в режим только для чтения. Если параметр SIZE_BASED_CLEANUP_MODE включен, также активируется механизм очистки для принудительного применения ограничения MAX_STORAGE_SIZE_MB.

После очистки достаточного пространства режим хранилища запросов автоматически переключается на чтение и запись.

Important

Если вы считаете, что для захвата рабочей нагрузки требуется более 10 ГБ дискового пространства, вам, вероятно, стоит пересмотреть и оптимизировать нагрузку для повторного использования планов запросов (например, с помощью принудительной параметризации или корректировки конфигураций Query Store). Начиная с SQL Server 2019 (15.x) и в База данных SQL Azure можно задать QUERY_CAPTURE_MODE значение CUSTOM для дополнительного управления политикой отслеживания запросов.

INTERVAL_LENGTH_MINUTES

Определяет временной интервал вычисления статистических данных о среде выполнения в хранилище запросов. Для оптимизации использования свободного места статистические данные о среде выполнения в хранилище вычисляются для фиксированного временного интервала. Этот интервал настраивается с помощью аргумента INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES — это тип bigint. Значение по умолчанию — 60.

SIZE_BASED_CLEANUP_MODE { AUTO | OFF }

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

  • AUTO

    Очистка по размеру автоматически активируется, когда размер на диске достигает 90 % MAX_STORAGE_SIZE_MB. Эта очистка сначала удаляет самые дешевые и самые старые запросы. Он останавливается примерно на 80 % MAX_STORAGE_SIZE_MB. Это значение является значением конфигурации по умолчанию.

  • OFF

    Очистка на основе размера не активируется автоматически.

SIZE_BASED_CLEANUP_MODE относится к типу нварчар.

QUERY_CAPTURE_MODE { ВСЕ | АВТО | CUSTOM | НЕТ }

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

Note

Курсоры, запросы в хранимых процедурах и скомпилированные в собственном коде запросы всегда записываются, если задан режим записи запроса ALL, AUTO или CUSTOM.

  • ALL

    Записывает все запросы. ALL — это значение конфигурации по умолчанию для SQL Server (SQL Server 2016 (13.x) по SQL Server 2017 (14.x)).

  • AUTO

    Записываются соответствующие запросы на основе показателя выполнения и объема потребления ресурсов. Это значение конфигурации по умолчанию для SQL Server (начиная с SQL Server 2019 (15.x)) и База данных SQL Azure.

  • NONE

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

  • CUSTOM

    Относится к: SQL Server (начиная с SQL Server 2019 (15.x))

    Позволяет контролировать QUERY_CAPTURE_POLICY опции. Пользовательские политики записи могут помочь хранилищу запросов записывать наиболее важные запросы в рабочей нагрузке. Сведения о настраиваемых параметрах см. в <query_capture_policy_option_list>.

MAX_PLANS_PER_QUERY

Определяет максимальное количество поддерживаемых планов для каждого запроса. MAX_PLANS_PER_QUERY — тип интеллекта. Значение по умолчанию — 200.

WAIT_STATS_CAPTURE_MODE { ON | OFF }

Относится к: SQL Server (начиная с SQL Server 2017 (14.x)))

Определяет, фиксируются ли статистические данные ожидания для каждого запроса.

  • ON

    Информация о статистике ожидания по запросам отслеживается. Это значение является значением конфигурации по умолчанию.

  • OFF

    Данные статистики ожидания для каждого запроса не записываются.

< > query_capture_policy_option_list :: =

Относится к: SQL Server (начиная с SQL Server 2019 (15.x))

Управляет параметрами политики захвата в Хранилище запросов . За исключением STALE_CAPTURE_POLICY_THRESHOLD, эти параметры определяют условия OR, которые должны выполняться для запросов, записываемых в определенное пороговое значение устаревшей политики записи.

Начиная с SQL Server 2019 (15.x), QUERY_CAPTURE_MODE = AUTO параметр фиксирует хранилище запросов подробности при достижении любого из следующих пороговых значений:

  • EXECUTION_COUNT = 30 выполнений = число выполнений
  • TOTAL_COMPILE_CPU_TIME_MS = 1 секунда = время компиляции в миллисекундах
  • TOTAL_EXECUTION_CPU_TIME_MS = 100 мс = время ЦП на выполнение в миллисекундах

Рассмотрим пример.

EXECUTION_COUNT = 30,
TOTAL_COMPILE_CPU_TIME_MS = 1000,
TOTAL_EXECUTION_CPU_TIME_MS = 100

Для настройки этих параметров можно использовать QUERY_CAPTURE_MODE = CUSTOM:

  • STALE_CAPTURE_POLICY_THRESHOLD = целое число { DAYS | ЧАСЫ }

    Определяет период интервала ознакомления для определения того, нужно ли записать запрос. Значение по умолчанию — 1 день, можно указать от 1 часа до 7 дней.

  • EXECUTION_COUNT = целое число

    Определяет количество выполнений запроса в течение ознакомительного периода. Значение по умолчанию — 30, то есть для порогового значения устаревшей политики записи по умолчанию запрос должен быть выполнен по меньшей мере 30 раз за один день, чтобы быть сохраненным в хранилище запросов. EXECUTION_COUNT — тип интелигент.

  • TOTAL_COMPILE_CPU_TIME_MS = целое число

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

  • TOTAL_EXECUTION_CPU_TIME_MS = целое число

    Определяет общее время ЦП, затраченное на выполнение, которое запрос использовал за ознакомительный период. Значение по умолчанию — 100, то есть для порогового значения устаревшей политики записи по умолчанию запрос должен иметь общее время ЦП, затраченное на выполнение, не менее 100 мс за один день, чтобы быть сохраненным в хранилище запросов. TOTAL_EXECUTION_CPU_TIME_MS — это тип интелигенции.

< > recovery_option ::=

Область применения: SQL Server

Управляет параметрами восстановления базы данных и проверкой ошибок дискового ввода-вывода.

  • FULL

    Обеспечивает полное восстановление после отказа носителя с помощью резервных копий журнала транзакций. Если файл данных поврежден, восстановление носителя может восстановить все зафиксированные транзакции. Для получения дополнительной информации см. раздел «Модели восстановления».

  • BULK_LOGGED

    Обеспечивает восстановление после сбоя носителя. Объединяет оптимальную производительность и минимальный объем пространства, занимаемого журналами; используется для больших систем или массовых операций. Сведения о том, какие операции можно регистрировать минимально, см. в разделе журнал транзакций. В модели восстановления BULK_LOGGED ведение журнала для этих операций минимально. Для получения дополнительной информации см. раздел «Модели восстановления».

  • SIMPLE

    Предусматривается стратегия простого резервирования, которая использует минимальное пространство под журналы. Пространство, отведенное под журналы, может быть автоматически многократно использовано, если оно больше не требуется для восстановления сбоев сервера. Для получения дополнительной информации см. раздел «Модели восстановления».

    Important

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

Модель восстановления по умолчанию определяется моделью восстановления системной базы данных model. Для получения дополнительной информации о выборе подходящей модели восстановления см. раздел «Модели восстановления».

Вы можете определить статус этой опции, изучив recovery_model столбцы и recovery_model_desc в каталоге sys.databases . Вы также можете определить статус, изучив Recovery свойство функции DATABASEPROPERTYEX .

TORN_PAGE_DETECTION { ON | OFF }

  • ON

    Неполные страницы можно обнаружить ядро СУБД.

  • OFF

    Неполные страницы не могут быть обнаружены ядро СУБД.

Important

Структура синтаксиса TORN_PAGE_DETECTION ON | OFF будет удален в будущей версии SQL Server. Избегайте использования этой структуры в новых разработках и запланируйте изменение приложений, которые сейчас ее используют. Вместо этого используйте параметр PAGE_VERIFY.

PAGE_VERIFY { КОНТРОЛЬНАЯ СУММА | TORN_PAGE_DETECTION | NONE }

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

  • CHECKSUM

    Вычисляет контрольную сумму по содержимому целой страницы и сохраняет полученное значение в ее заголовке при записи страницы на диск. При чтении страницы с диска контрольная сумма вычисляется повторно и сравнивается с сохраненным в заголовке страницы значением. Если значения не совпадают, сообщение об ошибке 824 (указывающее на сбой контрольной суммы) сообщается как в журнале ошибок SQL Server, так и в журнале событий Windows. Ошибка контрольной суммы указывает на проблему пути ввода-вывода. Чтобы определить первопричину, необходимо исследовать оборудование, драйверы встроенного ПО, BIOS, фильтрующее программное обеспечение (например, антивирусное) и другие компоненты ввода-вывода.

  • TORN_PAGE_DETECTION

    Сохраняет определенный двухбитовый шаблон для каждого 512-байтового сектора в 8-килобайтной (КБ) странице базы данных и сохраняет в базе данных заголовок страницы при записи страницы на диск. При чтении страницы с диска биты разрыва, хранимые в заголовке страницы, сравниваются с действительными сведениями о секторах страницы.

    Несовпадающие значения указывают, что только часть страницы была записана на диск. В этой ситуации сообщение об ошибке 824 (указывающее на ошибку разорванной страницы) сообщается как журналу ошибок SQL Server, так и журналу событий Windows. Разорванные страницы обычно обнаруживаются при восстановлении базы данных, если они действительно не полностью записаны. Однако другие сбои пути ввода-вывода могут стать причиной разрыва страницы в любое время.

  • NONE

    Записи на странице базы данных не создают значение CHECKSUM или TORN_PAGE_DETECTION. SQL Server не проверяет контрольную сумму или разорванную страницу во время чтения, даже если значение КОНТРОЛЬНОЙ суммы или TORN_PAGE_DETECTION присутствует в заголовке страницы.

Рассмотрите следующие важные моменты при использовании параметра PAGE_VERIFY.

  • По умолчанию — CHECKSUM.

  • При обновлении пользовательской или системной базы данных до SQL Server 2005 (9.x) или более поздней версии значение PAGE_VERIFY (NONE или TORN_PAGE_DETECTION) не изменяется. Рекомендуется изменить его на CHECKSUM.

    Note

    В более ранних версиях SQL Server параметр базы данных PAGE_VERIFY имеет значение NONE для tempdb базы данных и не может быть изменен. Начиная с SQL Server 2008 (10.0.x), значением по умолчанию для базы данных является КОНТРОЛЬНАЯ СУММА для tempdb новых установок SQL Server. При обновлении установки SQL Server значение по умолчанию остается NONE. Этот параметр можно изменять. Для базы данных tempdb рекомендуется использовать значение CHECKSUM.

  • TORN_PAGE_DETECTION может использовать меньше ресурсов, но обеспечивает минимальное подмножество защиты КОНТРОЛЬНОЙ суммы.

  • Аргумент PAGE_VERIFY можно установить, не производя перевод базы данных в режим "вне сети", блокировку или прочие действия, нарушающие ее параллелизм.

  • Значения CHECKSUM и TORN_PAGE_DETECTION являются взаимоисключающими. Оба параметра не могут быть включены одновременно.

При обнаружении ошибки разрыва страницы или контрольной суммы ее можно устранить с помощью восстановления из копии или потенциального перестроения индекса, если сбой ограничен только страницами индекса. При обнаружении ошибки контрольной суммы выполните инструкцию DBCC CHECKDB, чтобы определить тип поврежденной страницы базы данных. Для получения дополнительной информации о вариантах восстановления см. раздел RESTORE Arguments. Хотя восстановление данных устраняет проблему повреждения данных, первопричина (например, сбой оборудования диска) должна быть диагностирована и исправлена как можно скорее, чтобы предотвратить продолжающиеся ошибки.

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

Дополнительные сведения о сообщениях об ошибках 823, 824 и 825 см. в разделе:

Текущую настройку этой опции можно определить, изучив page_verify_option столбец в представлении каталога sys.databases или IsTornPageDetectionEnabled свойства функции DATABASEPROPERTYEX .

< > remote_data_archive_option ::=

Относится к: SQL Server (начиная с SQL Server 2016 (13.x))

Включает или отключает Stretch Database для базы данных. Дополнительные сведения см. в разделе Stretch Database.

Important

Stretch Database устарел в SQL Server 2022 (16.x) и База данных SQL Azure. Эта функция будет удалена в будущей версии ядро СУБД. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.

REMOTE_DATA_ARCHIVE = { ON ( SERVER <= server_name>, { CREDENTIAL = <db_scoped_credential_name> | FEDERATED_SERVICE_ACCOUNT = ON | OFF } ) | ОТ

  • ON

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

    Для включения службы Stretch Database для таблицы требуется разрешение db_owner. Для включения службы Stretch Database для базы данных требуются разрешения db_owner и CONTROL DATABASE.

    • СЕРВЕР = <server_name>

      Указывает адрес сервера Azure. Включает часть .database.windows.net имени. Например, MyStretchDatabaseServer.database.windows.net.

    • УДОСТОВЕРЕНИЕ = <db_scoped_credential_name>

      Указывает учетные данные базы данных, которые экземпляр SQL Server использует для подключения к серверу Azure. Перед выполнением этой команды убедитесь в наличии учетных данных. Дополнительные сведения см. в описании CREATE DATABASE SCOPED CREDENTIAL.

    • FEDERATED_SERVICE_ACCOUNT = { ON | OFF }

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

      • Учетная запись службы, под которой работает экземпляр SQL Server, является доменной учетной записью.
      • Учетная запись домена принадлежит домену, active Directory которого федеративно с идентификатором Microsoft Entra.
      • Удаленный сервер Azure настроен для поддержки проверки подлинности Microsoft Entra.
      • Учетная запись службы, под которой выполняется экземпляр SQL Server, должна быть настроена как учетная запись dbmanager или sysadmin на удаленном сервере Azure.

      Если указано значение ON для федеративной учетной записи службы, невозможно также указать аргумент CREDENTIAL. Следует указать аргумент CREDENTIAL, если указано значение OFF.

  • OFF

    Отключает Stretch Database для базы данных. Дополнительные сведения см. в разделе Отключение Stretch Database и возврат удаленных данных.

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

    Отключение Stretch Database не приводит к стиранию удаленной базы данных. Чтобы удалить удаленную базу данных, воспользуйтесь порталом Azure.

PERSISTENT_LOG_BUFFER

Область применения: SQL Server 2017 (14.x) и более поздних версий.

При указании этого параметра буфер журнала транзакций создается на томе, расположенном на диске, поддерживаемом памятью класса хранилища (NVDIMM-N хранилищем, которое также называется постоянным буфером журнала. Дополнительные сведения см. в статье Ускорение задержки фиксации транзакций с помощью памяти класса хранилища и добавление буфера сохраняемого журнала в базу данных.

< > service_broker_option ::=

Область применения: SQL Server

Управляет следующими параметрами Service Broker: включает или отключает доставку сообщений, задает новый идентификатор Service Broker или задает приоритеты беседы в on или OFF.

ENABLE_BROKER

Указывает, что компонент Service Broker включен для указанной базы данных. Доставка сообщений запускается, и is_broker_enabled флаг устанавливается в true в каталоге sys.databases . База данных сохраняет существующий идентификатор Service Broker. Service Broker не может быть включен, пока база данных является субъектом в конфигурации зеркального отображения базы данных.

Note

Параметр ENABLE_BROKER требует монопольной блокировки базы данных. Если другие сеансы заблокированы в базе данных, ENABLE_BROKER дождитесь, пока другие сеансы не отпустят свои блокировки. Чтобы включить Service Broker в пользовательской базе данных, убедитесь, что другие сеансы не используют базу данных перед выполнением ALTER DATABASE SET ENABLE_BROKER инструкции, например путем размещения базы данных в одном пользовательском режиме. Чтобы включить Service Broker в msdb базе данных, сначала остановите агент SQL Server, чтобы компонент Service Broker мог получить необходимую блокировку.

DISABLE_BROKER

Указывает, что компонент Service Broker отключен для указанной базы данных. Доставка сообщений останавливается, is_broker_enabled и флаг устанавливается как false в виде каталога sys.databases . База данных сохраняет существующий идентификатор Service Broker.

NEW_BROKER

Указывает, что база данных должна получить новый идентификатор посредника. База данных действует как новый посредник службы. Все существующие сеансы связи в базе данных будут немедленно удалены, не выдавая диалоговых сообщений о завершении. Любой маршрут, ссылающийся на старый идентификатор Service Broker, должен быть повторно создан с новым идентификатором.

ERROR_BROKER_CONVERSATIONS

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

HONOR_BROKER_PRIORITY { ON | OFF }

  • ON

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

  • OFF

    Операции Send выполняются, как если бы все диалоги имели приоритет по умолчанию.

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

Текущая настройка этого свойства указана в is_broker_priority_honored столбце в каталоге sys.databases .

< > snapshot_option ::=

Вычисляет уровень изоляции транзакции.

ALLOW_SNAPSHOT_ISOLATION { ON | OFF }

  • ON

    Включает параметр моментальных снимков на уровне базы данных. Если параметр включен, инструкции DML начинают создавать версии строк, даже если ни одна транзакция не использует изоляцию моментальных снимков. После установки этого параметра транзакции могут задавать уровень изоляции транзакций SNAPSHOT. Если транзакция выполняется на уровне изоляции SNAPSHOT, всем инструкциям видны данные из моментального снимка в состоянии, которое существовало в момент начала транзакции. Если транзакция выполняется с уровнем изоляции SNAPSHOT и обращается к данным нескольких баз данных, то либо параметр ALLOW_SNAPSHOT_ISOLATION должен быть установлен в состояние ON во всех базах данных, либо каждая инструкция в транзакции должна использовать подсказки блокировки при любом обращении предложения FROM к таблице базы данных, в которой параметр ALLOW_SNAPSHOT_ISOLATION установлен в состояние OFF.

  • OFF

    Отключает параметр моментальных снимков на уровне базы данных. Транзакции не могут указывать уровень изоляции SNAPSHOT.

Если вы изменяете состояние ALLOW_SNAPSHOT_ISOLATION (из ON в OFF или из OFF в ON), инструкция ALTER DATABASE не возвращает управление вызвавшей ее программе, пока все существующие транзакции в базе данных не будут зафиксированы. Если база данных уже находится в состоянии, указанном в инструкции ALTER DATABASE, управление вызвавшей программе будет возвращено немедленно. Если оператор ALTER DATABASE не возвращается быстро, используйте sys.dm_tran_active_snapshot_database_transactions , чтобы определить, существуют ли долгосрочные транзакции. Если инструкция ALTER DATABASE отменена, база данных останется в состоянии, в котором она находилась при запуске ALTER DATABASE. Вид каталога sys.databases показывает состояние транзакций с изоляцией снимков в базе данных. Если snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, команда ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF приостанавливает шесть секунд и повторяет операцию.

Изменить состояние ALLOW_SNAPSHOT_ISOLATION невозможно, если база данных находится в режиме OFFLINE.

Если ALLOW_SNAPSHOT_ISOLATION в базе данных READ_ONLY, параметр сохраняется, если база данных будет установлена в READ_WRITE.

Параметры ALLOW_SNAPSHOT_ISOLATION можно изменить для баз данных master, model, msdb и tempdb. Параметр сохраняется каждый раз, когда экземпляр ядро СУБД останавливается и перезапускается при изменении параметраtempdb. Если изменить настройку для базы данных model, эта настройка становится значением по умолчанию для всех вновь создаваемых баз данных, кроме tempdb.

По умолчанию этот параметр равен ON для баз данных master и msdb.

Текущие настройки этой опции можно определить, изучив столбец snapshot_isolation_state в каталоге sys.databases .

READ_COMMITTED_SNAPSHOT { ON | OFF }

  • ON

    Включает параметр уровня изоляции моментальных снимков READ COMMITTED на уровне базы данных. Если параметр включен, инструкции DML начинают создавать версии строк, даже если ни одна транзакция не использует изоляцию моментальных снимков. После включения этого параметра транзакции, указывающие уровень изоляции READ COMMITTED, используют управление версиями строк вместо блокировки. Данные моментального снимка видны всем инструкциям в состоянии, которое существовало на момент начала выполнения инструкции, если транзакция выполняется с уровнем изоляции READ COMMITTED.

  • OFF

    Отключает параметр уровня изоляции моментальных снимков READ COMMITTED на уровне базы данных. Транзакции с уровнем изоляции READ COMMITTED используют блокировку.

Чтобы установить параметр READ_COMMITTED_SNAPSHOT в значение ON или OFF, с базой данных не должно быть активных соединений, за исключением соединения, выполняющего команду ALTER DATABASE. Однако это не означает, что база данных должна находиться в однопользовательском режиме. Изменить состояние этого параметра невозможно, если база данных находится в режиме OFFLINE.

Если вы устанавливаете READ_COMMITTED_SNAPSHOT в базе данных READ_ONLY, параметр сохраняется при последующем READ_WRITE базы данных.

Параметр READ_COMMITTED_SNAPSHOT не может иметь значение ON для системных баз данных master, tempdb или msdb. Если изменить настройку для базы данных model, эта настройка становится значением по умолчанию для всех вновь создаваемых баз данных, кроме tempdb.

Текущие настройки этой опции можно определить, изучив столбец is_read_committed_snapshot_on в каталоге sys.databases .

Warning

При создании таблицы с УСТОЙЧИВОСТЬЮ = SCHEMA_ONLY, а READ_COMMITTED_SNAPSHOT впоследствии изменяется с помощью ALTER DATABASE, данные в таблице теряются.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

Применимо к: SQL Server (начиная с SQL Server 2014 (12.x))

  • ON

    Если уровень изоляции транзакции установлен в любое значение ниже SNAPSHOT, все интерпретированные операции Transact-SQL в таблицах, оптимизированных для памяти, выполняются с уровнем изоляции SNAPSHOT. Примеры уровней изоляции ниже, чем моментальный снимок — READ COMMITTED или READ UNCOMMITTED. Эти операции выполняются независимо от того, установлен ли уровень изоляции транзакции явно на уровне сеанса или неявно используется значение по умолчанию.

  • OFF

    Не повышает уровень изоляции транзакции для интерпретированных операций Transact-SQL в таблицах, оптимизированных для памяти.

Изменить состояние MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT невозможно, если база данных находится в режиме OFFLINE.

Значение по умолчанию — OFF.

Текущие настройки этой опции можно определить, изучив столбец is_memory_optimized_elevate_to_snapshot_on в каталоге sys.databases .

< > sql_option ::=

Управляет параметрами соответствия ANSI на уровне базы данных.

ANSI_NULL_DEFAULT { ON | OFF }

Определяет значение по умолчанию, NULL или NOT NULL, для столбцов определяемых пользователем типов CLR, для которых в инструкциях CREATE TABLE или ALTER TABLE не указана явно допустимость значений NULL. Столбцы, определенные с ограничениями, следуют правилам ограничений независимо от того, какой этот параметр может быть.

  • ON

    Значение по умолчанию для неопределенного столбца — NULL.

  • OFF

    Значение по умолчанию для неопределенного столбца — NOT NULL.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют настройки уровня базы данных по умолчанию для ANSI_NULL_DEFAULT. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_NULL_DEFAULT в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. SET ANSI_NULL_DFLT_ON.

Для совместимости ANSI при установке параметра базы данных ANSI_NULL_DEFAULT в состояние ON изменяется значение по умолчанию базы данных на значение NULL.

Вы можете определить статус этой опции, изучив столбец is_ansi_null_default_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiNullDefault свойство функции DATABASEPROPERTYEX .

ANSI_NULLS { ON | OFF }

  • ON

    Результатом любого сравнения со значением NULL будет UNKNOWN.

  • OFF

    Сравнение значений, отличных от Юникода, с значением NULL, равное TRUE, если оба значения равны NULL.

Important

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

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для ANSI_NULLS. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_NULLS в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. НАБОР ANSI_NULLS.

Important

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр SET ANSI_NULLS также должен быть установлен в ON.

Вы можете определить статус этой опции, изучив столбец is_ansi_nulls_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiNullsEnabled свойство функции DATABASEPROPERTYEX .

ANSI_PADDING { ON | OFF }

  • ON

    Строки перед преобразованием дополняются до одной и той же длины. Также наполняется до той же длины перед вставкой в тип данных варчар или нварчар .

  • OFF

    Вставляет пробелы в значениях символов в столбцы varchar или nvarchar . Также оставляет заканчивающиеся нули в бинарных значениях, которые вставляются в варбинарные столбцы. Значения не подгоняются под длину столбца.

    Состояние OFF касается только определения новых столбцов.

Important

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

столбцы char(n) и бинарные(n), допускающие нулевые значения, дополняются длиной столбца при установке ANSI_PADDING в ON. Конечные пробелы и нули отбрасываются, если параметр ANSI_PADDING имеет значение OFF. Столбцы char(n) и binary(n), которые не допускают null, всегда дополняются длиной столбца.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют настройки уровня базы данных по умолчанию для ANSI_PADDING. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_PADDING в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Дополнительные сведения см. в разделе SET ANSI_PADDING.

Вы можете определить статус этой опции, изучив столбец is_ansi_padding_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiPaddingEnabled свойство функции DATABASEPROPERTYEX .

ANSI_WARNINGS { ON | OFF }

  • ON

    В случае возникновения таких ситуаций, как деление на ноль, выдаются ошибки или предупреждения. Ошибки и предупреждения также возникают тогда, когда значения NULL появляются в агрегатных функциях.

  • OFF

    Предупреждения не выводятся, а в таких ситуациях, как деление на ноль, возвращается NULL.

Important

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр SET ANSI_WARNINGS должен быть установлен в ON.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для ANSI_WARNINGS. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_WARNINGS в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. SET ANSI_WARNINGS.

Вы можете определить статус этой опции, изучив столбец is_ansi_warnings_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiWarningsEnabled свойство функции DATABASEPROPERTYEX .

ARITHABORT { ON | OFF }

  • ON

    Запрос будет завершен, если во время его выполнения возникла ошибка переполнения или деления на ноль.

  • OFF

    Когда возникает одна из этих ошибок, выводится предупреждающее сообщение. Запрос, пакет или транзакция продолжают выполняться, как если бы ошибки не произошло, даже если выводится предупреждение.

Important

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр SET ARITHABORT должен быть установлен в ON.

Вы можете определить статус этой опции, изучив столбец is_arithabort_on в каталоге sys.databases . Вы также можете определить статус, изучив IsArithmeticAbortEnabled свойство функции DATABASEPROPERTYEX .

COMPATIBILITY_LEVEL = { 170 | 160 | 150 | 140 | 130 | 120 | 110 | 100 }

Дополнительные сведения см. в уровне совместимости ALTER DATABASE.

CONCAT_NULL_YIELDS_NULL { ON | OFF }

  • ON

    Результатом операции объединения будет NULL, если любой из операндов — NULL. Например, объединение строки символов "Это" со значением NULL приведет к результату NULL вместо "Это".

  • OFF

    Значение NULL будет обработано как пустая строка символов.

Important

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр CONCAT_NULL_YIELDS_NULL должен быть установлен в ON.

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

Настройки уровня соединения, которые установлены с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для CONCAT_NULL_YIELDS_NULL. По умолчанию клиенты ODBC и OLE DB выдают параметр инструкции SET уровня подключения CONCAT_NULL_YIELDS_NULL значение ON для сеанса при подключении к экземпляру SQL Server. Дополнительные сведения см. в описании SET CONCAT_NULL_YIELDS_NULL.

Вы можете определить статус этой опции, изучив столбец is_concat_null_yields_null_on в каталоге sys.databases . Вы также можете определить статус, изучив IsNullConcat свойство функции DATABASEPROPERTYEX .

NUMERIC_ROUNDABORT { ON | OFF }

  • ON

    Если в выражении происходит потеря точности, будет сформирована ошибка.

  • OFF

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

    Important

    При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр NUMERIC_ROUNDABORT должен быть установлен в OFF.

Статус этой опции можно определить в is_numeric_roundabort_on столбце в каталоге sys.databases . Вы также можете определить статус, изучив IsNumericRoundAbortEnabled свойство функции DATABASEPROPERTYEX .

QUOTED_IDENTIFIER { ON | OFF }

  • ON

    Двойные кавычки могут использоваться для идентификаторов с разделителями.

    Все строки, находящиеся в двойных кавычках, интерпретируются как идентификаторы объектов. Идентификаторы с разделителями не должны соответствовать правилам для идентификаторов Transact-SQL. Они могут быть ключевыми словами и включать символы, не разрешенные в идентификаторах Transact-SQL. Если двойная кавычка (") является частью идентификатора, она может быть представлена двумя двойными кавычками ("").

  • OFF

    Идентификаторы не могут быть заключены в кавычки и должны следовать всем правилам для идентификаторов Transact-SQL. Литералы могут разделяться как одинарными, так и двойными кавычками.

SQL Server также позволяет разделять идентификаторы квадратными скобками ([ и ]). Идентификаторы в скобках могут использоваться всегда, независимо от значения параметра QUOTED_IDENTIFIER. Дополнительные сведения см. в разделе "Идентификаторы базы данных".

При создании таблицы параметр QUOTED IDENTIFIER всегда сохраняется как ON в метаданных таблицы. Параметр сохраняется, даже если при создании таблицы он был установлен на OFF.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для QUOTED_IDENTIFIER. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая QUOTED_IDENTIFIER в значение ON, по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Дополнительные сведения см. в описании SET QUOTED_IDENTIFIER.

Вы можете определить статус этой опции, изучив столбец is_quoted_identifier_on в каталоге sys.databases . Вы также можете определить статус, изучив IsQuotedIdentifiersEnabled свойство функции DATABASEPROPERTYEX .

RECURSIVE_TRIGGERS { ON | OFF }

  • ON

    Рекурсивное срабатывание триггеров AFTER разрешено.

  • OFF

    Вы можете определить статус этой опции, изучив столбец is_recursive_triggers_on в каталоге sys.databases . Вы также можете определить статус, изучив IsRecursiveTriggersEnabled свойство функции DATABASEPROPERTYEX .

Note

Если параметр RECURSIVE_TRIGGERS установлен в состояние OFF, будет запрещена только прямая рекурсия. Чтобы отключить косвенную рекурсию, нужно установить параметр сервера nested triggers в состояние 0.

Вы можете определить статус этой опции, изучив is_recursive_triggers_on столбец в каталоге sys.databases или IsRecursiveTriggersEnabled свойство функции DATABASEPROPERTYEX .

< > suspend_for_snapshot_backup ::=

Область применения: SQL Server (начиная с SQL Server 2022 (16.x))

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

SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF }

Приостановка или отмена приостановки баз данных. По умолчанию OFF.

РЕЖИМ = COPY_ONLY

Optional. Использует режим COPY_ONLY.

< > target_recovery_time_option ::=

Применимо к: SQL Server (начиная с SQL Server 2012 (11.x))

Указывает частоту косвенных контрольных точек для каждой базы данных. Начиная с SQL Server 2016 (13.x), значение по умолчанию для новых баз данных составляет 1 минуту, что означает, что база данных использует косвенные контрольные точки. Для старых версий значение по умолчанию равно 0, указывающее, что база данных использует автоматические контрольные точки, частота которой зависит от параметра интервала восстановления экземпляра сервера. Корпорация Майкрософт рекомендует 1 минуту для большинства систем.

TARGET_RECOVERY_TIME = target_recovery_time { СЕКУНДЫ | МИНУТЫ }

  • target_recovery_time

    Указывает максимальное время для восстановления определенной базы данных в случае сбоя. target_recovery_time — тип интелигент.

  • SECONDS

    Указывает, что target_recovery_time выражается как количество секунд.

  • MINUTES

    Указывает, что target_recovery_time выражается как количество минут.

Для получения дополнительной информации о косвенных контрольных пунктах см. Контрольные точки базы данных.

OPTIMIZED_LOCKING { ON | OFF }

Применимо к: SQL Server (начиная с SQL Server 2025 (17.x))

Позволяет оптимизировать блокировку. Оптимизированная блокировка по умолчанию имеет значение OFF.

Чтобы задать OPTIMIZED_LOCKING ON или OFF, активные подключения к базе данных не должны быть, кроме подключения, выполняемого командой ALTER DATABASE. Однако это не означает, что база данных должна находиться в однопользовательском режиме. Вы не можете изменить состояние этого параметра, если база данных не имеет значение ONLINE.

ЗАВЕРШЕНИЕ< WITH >::=

Указывает, когда откатывать незавершенные транзакции при переходе базы данных из одного состояния в другое. Если предложение завершения опущено, инструкция ALTER DATABASE будет бесконечно ожидать блокировки базы данных. Может быть указано только одно предложение завершения, которое должно следовать за предложением SET.

Note

Не все параметры базы данных могут использоваться с предложением WITH <termination>. Для получения дополнительной информации смотрите таблицу в разделе «Настройки » в разделе «Замечания» этой статьи.

  • ОТКАТ ПОСЛЕ ЦЕЛОГО ЧИСЛА [СЕКУНДЫ] | ОТКАТ НЕМЕДЛЕННЫЙ

    Указывает, нужно ли откатить транзакцию через указанное количество секунд или немедленно.

  • NO_WAIT

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

Задание параметров

Чтобы получить текущие настройки опций базы данных, используйте вид каталога sys.databases или DATABASEPROPERTYEX

После установки параметра базы данных новое значение вступает в силу немедленно.

Вы можете изменить значения по умолчанию для любого из параметров базы данных для всех созданных баз данных. Для этого измените соответствующий параметр базы данных model.

Не все параметры базы данных используют предложение WITH <termination> или могут быть указаны в сочетании с другими параметрами. В следующей таблице перечислены эти параметры.

Категория опционов Может быть указан с другими параметрами Может использовать предложение WITH <termination>
<db_state_option> Yes Yes
<db_user_access_option> Yes Yes
<db_update_option> Yes Yes
<delayed_durability_option> Yes Yes
<external_access_option> Yes No
<cursor_option> Yes No
<auto_option> Yes No
<sql_option> Yes No
<recovery_option> Yes No
<target_recovery_time_option> No Yes
<database_mirroring_option> No No
ALLOW_SNAPSHOT_ISOLATION No No
READ_COMMITTED_SNAPSHOT No Yes
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT Yes Yes
<service_broker_option> Yes No
DATE_CORRELATION_OPTIMIZATION Yes Yes
<parameterization_option> Yes Yes
<change_tracking_option> Yes Yes
<db_encryption_option> Yes No
<accelerated_database_recovery> No Yes
<optimized_locking> No Yes

Кэш планов для экземпляра SQL Server очищается, задав один из следующих параметров:

OFFLINE

ONLINE

MODIFY_NAME

COLLATE

READ_ONLY

READ_WRITE

ИЗМЕНЕНИЕ ФАЙЛОВОЙ ГРУППЫ ПО УМОЛЧАНИЮ

ИЗМЕНЕНИЕ READ_WRITE ФАЙЛОВОЙ ГРУППЫ

ИЗМЕНЕНИЕ READ_ONLY ФАЙЛОВОЙ ГРУППЫ

Кроме того, кэш планов сбрасывается в следующих случаях:

  • В базе данных включен параметр базы данных AUTO_CLOSE. Если отсутствуют ссылки соединений пользователя или базы данных, фоновая задача предпримет попытку закрыть и отключить базу данных автоматически.
  • Выполняется несколько запросов в базе данных с параметрами по умолчанию. Затем база данных уничтожается.
  • Моментальный снимок базы данных для базы данных-источника удален.
  • Успешное перестроение журнала транзакций базы данных.
  • Восстановление резервной копии базы данных.
  • Отсоединение базы данных.

Очистка кэша планов становится причиной перекомпиляции всех последующих планов выполнения и приводит к непредвиденному временному снижению производительности обработки запросов. Для каждого очищаемого хранилища кэша в кэше планов журнал ошибок SQL Server содержит следующее информационное сообщение: SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations Это сообщение добавляется в журнал каждые пять минут при сбросе кэша в течение этого интервала времени.

Examples

A. Установка параметров для базы данных

В следующем примере задается модель восстановления и параметры проверки страницы данных для образца базы данных AdventureWorks2025.

USE master;
GO
ALTER DATABASE [database_name]
SET RECOVERY FULL PAGE_VERIFY CHECKSUM;
GO

B. перевод базы данных в состояние READ_ONLY;

Для изменения состояния базы данных или файловой группы в READ_ONLY или READ_WRITE требуется монопольный доступ к базе данных. В следующем примере база данных устанавливается в режим SINGLE_USER для получения монопольного доступа. Затем состояние базы данных AdventureWorks2025 устанавливается в READ_ONLY, а также возвращается доступ к базе данных всем пользователям.

Note

В этом примере используется параметр завершения WITH ROLLBACK IMMEDIATE в первой инструкции ALTER DATABASE. Все неполные транзакции откатываются, а все другие подключения к базе данных AdventureWorks2025 немедленно отключены.

USE master;
GO
ALTER DATABASE [database_name]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO

C. включение изоляции моментального снимка для базы данных;

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

USE [database_name];
USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
    snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO

Результирующий набор показывает, что платформа изоляции моментального снимка включена.

name snapshot_isolation_state description
[database_name] 1 ON

D. включение, изменение и отключение отслеживания изменений;

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

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);

В следующем примере демонстрируется уменьшение срока хранения до 3 дней.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);

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

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

E. включение хранилища запросов;

Относится к: SQL Server (начиная с SQL Server 2016 (13.x))

В приведенном ниже примере включается хранилище запросов и настраиваются его параметры.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      QUERY_CAPTURE_MODE = AUTO,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60
    );

F. включение хранилища запросов с использованием статистики ожидания;

Применимо к: SQL Server (начиная с SQL Server 2017 (14.x))

В приведенном ниже примере включается хранилище запросов и настраиваются его параметры.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON,
    );

G. включение хранилища запросов с использованием параметров пользовательской политики записи.

Относится к: SQL Server (начиная с SQL Server 2019 (15.x))

В приведенном ниже примере включается хранилище запросов и настраиваются его параметры.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON,
      QUERY_CAPTURE_MODE = CUSTOM,
      QUERY_CAPTURE_POLICY = (
        STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
        EXECUTION_COUNT = 30,
        TOTAL_COMPILE_CPU_TIME_MS = 1000,
        TOTAL_EXECUTION_CPU_TIME_MS = 100
      )
    );

* База данных SQL *  

 

SQL Database

Уровни совместимости — это SET параметры, но описаны уровне совместимости ALTER DATABASE.

Note

Многие опции набора базы данных можно настроить для текущей сессии с помощью операторов SET , и часто они настраиваются приложениями при подключении. Параметры инструкции SET уровня сеанса переопределяют значения ALTER DATABASE SET. Описанные в следующих разделах параметры базы данных являются значениями, которые можно задавать для сеансов, не предоставляющих явно другие значения параметра SET.

Syntax

ALTER DATABASE { database_name | Current }
SET
{
    <option_spec> [ ,...n ] [ WITH <termination> ]
}
;

<option_spec> ::=
{
    <auto_option>
  | <automatic_tuning_option>
  | <change_tracking_option>
  | <cursor_option>
  | <db_encryption_option>
  | <db_update_option>
  | <db_user_access_option>
  | <delayed_durability_option>
  | <parameterization_option>
  | <query_store_options>
  | <snapshot_option>
  | <sql_option>
  | <target_recovery_time_option>
  | <termination>
  | <temporal_history_retention>
}
;

<auto_option> ::=
{
    AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
  | AUTO_SHRINK { ON | OFF }
  | AUTO_UPDATE_STATISTICS { ON | OFF }
  | AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}

<automatic_tuning_option> ::=
{
    AUTOMATIC_TUNING = { AUTO | INHERIT | CUSTOM }
  | AUTOMATIC_TUNING ( CREATE_INDEX = { DEFAULT | ON | OFF } )
  | AUTOMATIC_TUNING ( DROP_INDEX = { DEFAULT | ON | OFF } )
  | AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}

<change_tracking_option> ::=
{
    CHANGE_TRACKING
    {
        = OFF
      | = ON [ ( <change_tracking_option_list > [,...n] ) ]
      | ( <change_tracking_option_list> [,...n] )
    }
}

<change_tracking_option_list> ::=
   {
       AUTO_CLEANUP = { ON | OFF }
     | CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
   }

<cursor_option> ::=
{
    CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}

<db_encryption_option> ::=
  ENCRYPTION { ON | OFF }

<db_update_option> ::=
  { READ_ONLY | READ_WRITE }

<db_user_access_option> ::=
  { RESTRICTED_USER | MULTI_USER }

<delayed_durability_option> ::= DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }

<parameterization_option> ::=
  PARAMETERIZATION { SIMPLE | FORCED }

<query_store_options> ::=
{
  QUERY_STORE
  {
      = OFF
    | = ON [ ( <query_store_option_list> [,... n] ) ]
    | ( < query_store_option_list> [,... n] )
    | CLEAR [ ALL ]
  }
}

<query_store_option_list> ::=
{
  OPERATION_MODE = { READ_WRITE | READ_ONLY }
  | CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
  | DATA_FLUSH_INTERVAL_SECONDS = number
  | MAX_STORAGE_SIZE_MB = number
  | INTERVAL_LENGTH_MINUTES = number
  | SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
  | QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
  | MAX_PLANS_PER_QUERY = number
  | WAIT_STATS_CAPTURE_MODE = { ON | OFF }
  | QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}

<query_capture_policy_option_list> :: =
{
    STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
    | EXECUTION_COUNT = number
    | TOTAL_COMPILE_CPU_TIME_MS = number
    | TOTAL_EXECUTION_CPU_TIME_MS = number
}

<snapshot_option> ::=
{
    ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
  | READ_COMMITTED_SNAPSHOT { ON | OFF }
  | MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
}
<sql_option> ::=
{
    ANSI_NULL_DEFAULT { ON | OFF }
  | ANSI_NULLS { ON | OFF }
  | ANSI_PADDING { ON | OFF }
  | ANSI_WARNINGS { ON | OFF }
  | ARITHABORT { ON | OFF }
  | COMPATIBILITY_LEVEL = { 160 | 150 | 140 | 130 | 120 | 110 | 100 }
  | CONCAT_NULL_YIELDS_NULL { ON | OFF }
  | NUMERIC_ROUNDABORT { ON | OFF }
  | QUOTED_IDENTIFIER { ON | OFF }
  | RECURSIVE_TRIGGERS { ON | OFF }
}

<termination>::=
{
    ROLLBACK AFTER integer [ SECONDS ]
  | ROLLBACK IMMEDIATE
  | NO_WAIT
}

<temporal_history_retention>::=TEMPORAL_HISTORY_RETENTION { ON | OFF }

Arguments

database_name

Имя изменяемой базы данных.

  • CURRENT

    CURRENT выполняет действие в текущей базе данных. CURRENT работает не со всеми параметрами и не во всех контекстах. Если CURRENT не работает, укажите имя базы данных.

< > auto_option ::=

Управляет автоматическими параметрами.

AUTO_CREATE_STATISTICS { ON | OFF }

  • ON

    Оптимизатор запросов в случае необходимости создает статистику по отдельным столбцам в предикатах запросов, чтобы улучшить планы запросов и повысить производительность запросов. Такая статистика по отдельным столбцам создается, когда оптимизатор запросов компилирует запросы. Статистика по отдельным столбцам создается только для столбцов, ни один из которых не является первым столбцом в существующем объекте статистики.

    Значение по умолчанию — ON. Для большинства баз данных рекомендуется использовать значение по умолчанию.

  • OFF

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

Вы можете определить статус этой опции, изучив столбец is_auto_create_stats_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAutoCreateStatistics свойство функции DATABASEPROPERTYEX .

Для получения дополнительной информации смотрите раздел «Статистические опции» в разделе Статистика.

INCREMENTAL = ON | ОТ

Присваивает AUTO_CREATE_STATISTICS значение ON, а INCREMENTAL — значение ON. Он создает автоматически создаваемые статистики как добавочные везде, где поддерживаются добавочные статистики. Значение по умолчанию — OFF. Дополнительные сведения см. в статье CREATE STATISTICS.

AUTO_SHRINK { ON | OFF }

  • ON

    Файлы базы данных являются кандидатами на периодическое сжатие. Если у вас нет определенного требования, не устанавливайте параметр базы данных AUTO_SHRINK значение ON. Дополнительные сведения см. в разделе Сжатие базы данных.

И файлы данных, и файлы журналов могут быть автоматически сжаты. AUTO_SHRINK уменьшает размер журнала транзакций только в том случае, если вы выбрали простую модель восстановления базы данных или создали резервную копию журнала. Если этот параметр установлен в состояние OFF, файлы базы данных не будут автоматически сжиматься при периодической проверке на неиспользуемое пространство.

При включенном параметре AUTO_SHRINK файлы будут сжаты, если более 25 процентов файла содержит неиспользуемое пространство. Параметр вызывает сжатие файла в один из двух размеров. Он сжимает до большего, если:

  • размер, в котором 25 процентов файла не используется;
  • размер файла при его создании.

Нельзя сжать базу данных, находящуюся в состоянии только для чтения.

  • OFF

    Файлы базы данных не будут автоматически сжаты во время периодических проверок неиспользуемого пространства.

Вы можете определить статус этой опции, изучив столбец is_auto_shrink_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAutoShrink свойство функции DATABASEPROPERTYEX .

Note

В автономной базе данных параметр AUTO_SHRINK недоступен.

AUTO_UPDATE_STATISTICS { ON | OFF }

  • ON

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

    Оптимизатор запросов проверяет наличие устаревшей статистики перед компиляцией запроса и выполняет кэшированный план запроса. Оптимизатор запросов с помощью столбцов, таблиц и индексированных представлений в предикате запроса определяет, какая статистика могла устареть. Оптимизатор запросов определяет эти сведения перед компиляцией запроса. Перед запуском кэшированного плана запроса ядро СУБД проверяет, ссылается ли план запроса на актуальную статистику.

    Параметр AUTO_UPDATE_STATISTICS применяется к статистике, создаваемой для индексов и отдельных столбцов в предикатах запросов, и к статистике, создаваемой инструкцией CREATE STATISTICS. Этот параметр также применяется к отфильтрованной статистике.

    Значение по умолчанию — ON. Для большинства баз данных рекомендуется использовать значение по умолчанию.

    Используйте параметр AUTO_UPDATE_STATISTICS_ASYNC, чтобы указать режим обновления статистики: синхронный или асинхронный.

  • OFF

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

    Вы можете определить статус этой опции, изучив столбец is_auto_update_stats_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAutoUpdateStatistics свойство функции DATABASEPROPERTYEX .

    Для получения дополнительной информации смотрите раздел «Статистические опции» в разделе Статистика.

AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

  • ON

    Указывает, что обновление статистики для параметра AUTO_UPDATE_STATISTICS выполняется асинхронно. Оптимизатор запросов не ожидает завершения обновления статистики перед компиляцией запросов.

    Установка этого параметра в состояние ON не будет иметь эффекта, если параметр AUTO_UPDATE_STATISTICS не установлен в состояние ON.

    По умолчанию параметр AUTO_UPDATE_STATISTICS_ASYNC имеет значение OFF, а оптимизатор запросов обновляет статистику в синхронном режиме.

  • OFF

    Указывает, что обновление статистики для параметра AUTO_UPDATE_STATISTICS выполняется синхронно. Оптимизатор запросов ожидает завершения обновления статистики перед компиляцией запросов.

    Установка этого параметра в значение OFF не будет иметь эффекта, если параметр AUTO_UPDATE_STATISTICS не установлен в значение ON.

Вы можете определить статус этой опции, изучив столбец is_auto_update_stats_async_on в каталоге sys.databases .

Для получения дополнительной информации, описывающей использование синхронных или асинхронных обновлений статистики, смотрите раздел «Статистические опции» в разделе Статистика.

< > automatic_tuning_option ::=

Управление автоматическими настройками для автоматической настройки. Параметры для следующих параметров можно просмотреть на портале Azure или с помощью T-SQL в представлении sys.database_automatic_tuning_options.

AUTOMATIC_TUNING = { AUTO | НАСЛЕДОВАНИЕ | CUSTOM }

  • AUTO

    Установка значения автоматической настройки для автоматической настройки применяет параметры конфигурации Azure по умолчанию для автоматической настройки. На портале Azure это соответствует параметру "Наследование: Значения по умолчанию Azure".

  • INHERIT

    При использовании значения INHERIT с родительского сервера будет наследоваться конфигурация по умолчанию. На портале Azure это соответствует параметру "Наследование: Сервер". Это особенно полезно, если вы хотите задать на родительском сервере пользовательские параметры автоматической настройки, которые будут наследовать все базы данных. Чтобы наследование работало, для работы трех отдельных параметров настройки FORCE_LAST_GOOD_PLAN, CREATE_INDEX и DROP_INDEX необходимо задать значение DEFAULT для баз данных.

  • CUSTOM

    Используя настраиваемое значение, необходимо настроить каждый из параметров автоматической настройки, доступных в базах данных. На портале Azure это отражает возможность "наследовать от: Не наследовать".

CREATE_INDEX = { ПО УМОЛЧАНИЮ | НА | OFF }

Включает или отключает опцию автоматического управления CREATE_INDEX индексом Автоматическая настройка. Состояние этого параметра можно просмотреть на портале Azure или с помощью T-SQL в представлении sys.database_automatic_tuning_options.

  • DEFAULT

    Наследует параметры по умолчанию с сервера. В этом случае параметры включения и отключения отдельных функций автоматической настройки задаются на уровне сервера.

  • ON

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

  • OFF

    Не создает автоматически недостающие индексы в базе данных.

DROP_INDEX = { ПО УМОЛЧАНИЮ | НА | OFF }

Включает или отключает опцию автоматического управления DROP_INDEX индексом Автоматическая настройка. Состояние этого параметра можно просмотреть на портале Azure или с помощью T-SQL в представлении sys.database_automatic_tuning_options.

  • DEFAULT

    Наследует параметры по умолчанию с сервера. В этом случае параметры включения и отключения отдельных функций автоматической настройки задаются на уровне сервера.

  • ON

    Автоматически удаляет повторяющиеся или неиспользуемые индексы для повышения производительности рабочей нагрузки.

  • OFF

    Не удаляет автоматически недостающие индексы в базе данных.

FORCE_LAST_GOOD_PLAN = { ПО УМОЛЧАНИЮ | НА | OFF }

Включает или отключает опцию автоматической коррекции FORCE_LAST_GOOD_PLAN плана — автоматической настройки. Состояние этого параметра можно просмотреть на портале Azure или с помощью T-SQL в представлении sys.database_automatic_tuning_options.

  • DEFAULT

    Наследует параметры по умолчанию с сервера. В этом случае параметры включения и отключения отдельных функций автоматической настройки задаются на уровне сервера. Это значение по умолчанию. Значением по умолчанию для новых серверов SQL Azure является ON, то есть по умолчанию новые базы данных наследуют параметр ON.

  • ON

    Ядро СУБД автоматически включает последний известный удачный план для Transact-SQL запросов, когда новый план запроса приводит к снижению производительности. Ядро СУБД непрерывно отслеживает производительность запроса Transact-SQL в форсированном плане. При наличии повышения производительности ядро СУБД продолжает использовать последний известный хороший план. Если повышение производительности не обнаружено, ядро СУБД создает новый план запроса. Оператор не работает, если Query Store не включён или не находится в режиме чтения-записи .

  • OFF

    Движок базы данных сообщает о возможных регрессиях производительности запросов, вызванных изменениями плана запросов в sys.dm_db_tuning_recommendations представлении. Однако эти рекомендации не применяются автоматически. Пользователь может отслеживать активные рекомендации и устранять выявленные проблемы, применяя сценарии Transact-SQL, которые отображаются в представлении.

< > change_tracking_option ::=

Определяет параметры отслеживания изменений. Отслеживание изменений можно включить или отключить, а также установить или изменить параметры. Примеры см. раздел «Примеры » позже в этой статье.

  • ON

    Включает отслеживание изменений для базы данных. При включении отслеживания изменений также необходимо задать параметры AUTO CLEANUP и CHANGE RETENTION.

    • AUTO_CLEANUP = { ON | OFF }

      • ON

        Данные отслеживания изменений автоматически удаляются по истечении заданного срока хранения.

      • OFF

        Данные отслеживания изменений не удаляются из базы данных.

    • CHANGE_RETENTION = retention_period { ДНИ | ЧАСЫ | МИНУТЫ }

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

      retention_period — целое число, задающее числовую компоненту периода удержания.

      Срок хранения по умолчанию составляет 2 дня. Минимальный срок хранения составляет 1 минуту. Стандартный тип удержания — DAYS.

  • OFF

    Отключает отслеживание изменений для базы данных. Перед отключением отслеживания изменений для базы данных предварительно отключите отслеживание изменений для всех таблиц.

< > cursor_option ::=

Управляет параметрами курсора.

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

  • ON

    Любые курсоры, открытые при фиксации или откате транзакции, закрываются.

  • OFF

    Курсоры остаются открытыми при фиксации транзакции; откат транзакции закрывает все курсоры, кроме этих курсоров, определенных как INSENSITIVE или STATIC.

Настройки уровня соединения, которые установлены с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для CURSOR_CLOSE_ON_COMMIT. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая CURSOR_CLOSE_ON_COMMIT в значение OFF для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. SET CURSOR_CLOSE_ON_COMMIT.

Вы можете определить статус этой опции, изучив is_cursor_close_on_commit_on столбец в каталоге sys.databases или IsCloseCursorsOnCommitEnabled свойство функции DATABASEPROPERTYEX . Курсор неявно освобождается только при отключении. Для получения дополнительной информации см. DECLARE CURSOR.

< > db_encryption_option ::=

Определяет параметры шифрования базы данных.

ШИФРОВАНИЕ { ON | OFF }

Включает шифрование базы данных (ON) или отключает его (OFF). Дополнительные сведения о шифровании баз данных см. в прозрачного шифрования данных (TDE) и прозрачного шифрования данных для базы данных SQL Azure, управляемого экземпляра SQL Azure и Azure Synapse Analytics.

Если шифрование включено на уровне базы данных, все группы файлов шифруются. Все новые группы файлов наследуют зашифрованное свойство. Если для любой группы файлов в базе данных задано значение READ ONLY, операция шифрования базы данных завершается ошибкой.

Вы можете увидеть состояние шифрования базы данных с помощью sys.dm_database_encryption_keys динамического управления.

< > db_update_option ::=

Управляет разрешениями на обновления базы данных.

  • READ_ONLY

    Пользователи могут считывать данные из базы данных, но не могут изменять их.

    Note

    Для улучшения производительности запросов выполните обновление статистики перед тем, как перевести базу данных в режим доступа READ_ONLY. Если после READ_ONLY базы данных требуется дополнительная статистика, ядро СУБД создает статистику в tempdb. Для получения дополнительной информации о статистике для базы данных только для чтения см. раздел Статистика.

  • READ_WRITE

    База данных доступна для операций чтения и записи.

Чтобы изменить это состояние, необходимо обладать монопольным доступом к базе данных. Дополнительные сведения см. в описании предложения SINGLE_USER.

Note

В База данных SQL Azure федеративных базах данных SET { READ_ONLY | READ_WRITE } отключен.

< > db_user_access_option ::=

Управляет пользовательским доступом к базе данных.

  • RESTRICTED_USER

    Позволяет подключаться к базе данных только членам предопределенной роли базы данных db_owner и предопределенных ролей сервера dbcreator и sysadmin. Количество соединений при этом не ограничивается. Все соединения с базой данных будут отключены на период времени, определяемый завершающим предложением инструкции ALTER DATABASE. После того как база данных перешла в состояние RESTRICTED_USER, попытки подключения пользователей, не соответствующими описанным выше условиям, будут отклонены. В Базе данных SQL Azure ее необходимо выполнять из пользовательской базы данных. В базе данных master может возникнуть сообщение об ошибке Msg 42008, Level 16, State 3, Line 1 ODBC error: State: 28000: Error: 18456 Message:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user '##MS_InstanceCertificate##'.'.

  • MULTI_USER

    Все пользователи, имеющие соответствующие разрешения на подключение к базе данных, будут допущены к базе данных. Вы можете определить статус этой опции, изучив user_access столбец в каталоге sys.databases или UserAccess свойство функции DATABASEPROPERTYEX . В Базе данных SQL Azure ее необходимо выполнять из пользовательской базы данных. В базе данных master может возникнуть сообщение об ошибке Msg 42008, Level 16, State 3, Line 1 ODBC error: State: 28000: Error: 18456 Message:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user '##MS_InstanceCertificate##'.'.

< > delayed_durability_option ::=

Управляет тем, является ли фиксация транзакций полностью устойчивой или отложенной устойчивой.

  • DISABLED

    Все транзакции, следующие за SET DISABLED, являются полностью устойчивыми. Все параметры устойчивости, заданные в блоке ATOMIC или инструкции COMMIT, не учитываются.

  • ALLOWED

    Все транзакции, следующие за SET ALLOWED, являются полностью устойчивыми или отложенными устойчивыми в зависимости от параметра устойчивости, заданного в блоке ATOMIC или инструкции COMMIT.

  • FORCED

    Все транзакции, следующие за SET FORCED, являются отложенными устойчивыми. Все параметры устойчивости, заданные в блоке ATOMIC или инструкции COMMIT, не учитываются.

< > PARAMETERIZATION_option ::=

Управляет параметром параметризации.

ПАРАМЕТРИЗАЦИЯ { SIMPLE | ПРИНУДИТЕЛЬНО }

  • SIMPLE

    Запросы параметризуются на основании поведения базы данных по умолчанию.

  • FORCED

    SQL Server параметризирует все запросы в базе данных.

Текущие настройки этой опции можно определить, изучив столбец is_parameterization_forced в каталоге sys.databases .

< > query_store_options ::=

  • НА | ВЫКЛЮЧЕНО | ЧИСТО [ ВСЕ ]

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

    • ON

      Включает хранилище запросов. ON — значение по умолчанию.

    • OFF

      Отключает хранилище запросов.

      Note

      хранилище запросов нельзя отключить в одной базе данных и эластичном пуле База данных SQL Azure. Выполнение ALTER DATABASE [database] SET QUERY_STORE = OFF возвращает предупреждение 'QUERY_STORE=OFF' is not supported in this version of SQL Server..

    • CLEAR

      Удаляет содержимое хранилища запросов.

OPERATION_MODE

Описывает режим работы хранилища запросов. Допустимые значения: READ_ONLY и READ_WRITE. В режиме READ_WRITE хранилище запросов собирает и сохраняет план запросов и статистические данные о выполнении. В режиме READ_ONLY можно считывать данные из хранилища запросов, но новые сведения не добавляются. Если максимальное выделенное пространство хранилища запросов было исчерпано, хранилище запросов изменяет режим работы на READ_ONLY.

CLEANUP_POLICY

Описывает политику хранения данных хранилища запросов. STALE_QUERY_THRESHOLD_DAYS определяет количество дней хранения сведений о запросе в хранилище. STALE_QUERY_THRESHOLD_DAYS — это тип bigint. Значение по умолчанию — 30. Для SQL Database Basic edition по умолчанию — 7 дней.

DATA_FLUSH_INTERVAL_SECONDS

Определяет частоту, с которой данные, записанные в хранилище запросов, сохраняются на диск. Для оптимизации производительности данные, собранные хранилищем запросов, асинхронно записываются на диск. Для настройки частоты этой асинхронной передачи используется аргумент DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS тип bigint. По умолчанию значение — 900 (15 мин).

MAX_STORAGE_SIZE_MB

Определяет свободное место, выделенное для хранилища запросов. MAX_STORAGE_SIZE_MB тип bigint.

Note

В Azure SQL Database значение MAX_STORAGE_SIZE_MB по умолчанию различается по уровню сервиса: Premium, Business Critical и Hyperscale: 1 024 MB; стандартное и универсальное назначение: 100 МБ; Базовая: 10 МБ. Максимальное допустимое MAX_STORAGE_SIZE_MB значение — 10 240 МБ.

Note

Ограничение MAX_STORAGE_SIZE_MB не применяется строго. Размер хранилища проверяется только в том случае, если хранилище запросов записывает данные на диск. Этот интервал задается параметром DATA_FLUSH_INTERVAL_SECONDS или параметром диалогового окна хранилища запросов Management Studio Интервал записи данных на диск. Значение по умолчанию — 900 секунд (или 15 минут). Если хранилище запросов нарушило ограничение MAX_STORAGE_SIZE_MB между проверками размера хранилища, оно переходит в режим только для чтения. Если параметр SIZE_BASED_CLEANUP_MODE включен, также активируется механизм очистки для принудительного применения ограничения MAX_STORAGE_SIZE_MB. После очистки достаточного пространства режим хранилища запросов автоматически переключается на чтение и запись.

Important

Если вы считаете, что для захвата рабочей нагрузки требуется более 10 ГБ дискового пространства, вам, вероятно, стоит пересмотреть и оптимизировать нагрузку для повторного использования планов запросов (например, с помощью принудительной параметризации или корректировки конфигураций Query Store). Начиная с SQL Server 2019 (15.x) и в База данных SQL Azure можно задать QUERY_CAPTURE_MODE значение CUSTOM для дополнительного управления политикой отслеживания запросов.

INTERVAL_LENGTH_MINUTES

Определяет временной интервал вычисления статистических данных о среде выполнения в хранилище запросов. Для оптимизации использования свободного места статистические данные о среде выполнения в хранилище вычисляются для фиксированного временного интервала. Этот интервал настраивается с помощью аргумента INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES — это тип bigint. Значение по умолчанию — 60.

SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }

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

  • OFF

    Очистка на основе размера не активируется автоматически.

  • AUTO

    Очистка по размеру автоматически активируется, когда размер на диске достигает 90 % max_storage_size_mb. Эта очистка сначала удаляет самые дешевые и самые старые запросы. Она останавливается примерно на 80 % max_storage_size_mb. Это значение конфигурации по умолчанию.

SIZE_BASED_CLEANUP_MODE относится к типу нварчар.

QUERY_CAPTURE_MODE { ВСЕ | АВТО | CUSTOM | НЕТ }

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

Note

Курсоры, запросы в хранимых процедурах и скомпилированные в собственном коде запросы всегда записываются, если задан режим записи запроса ALL, AUTO или CUSTOM.

  • ALL

    Записывает все запросы.

  • AUTO

    Записываются соответствующие запросы на основе показателя выполнения и объема потребления ресурсов. Это значение конфигурации по умолчанию для База данных SQL Azure.

  • NONE

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

  • CUSTOM

    Позволяет управлять параметрами QUERY_CAPTURE_POLICY.

QUERY_CAPTURE_MODE относится к типу нварчар.

MAX_PLANS_PER_QUERY

Определяет максимальное количество поддерживаемых планов для каждого запроса. MAX_PLANS_PER_QUERY — тип интеллекта. Значение по умолчанию — 200.

WAIT_STATS_CAPTURE_MODE { ON | OFF }

Определяет, фиксируются ли статистические данные ожидания для каждого запроса.

  • ON

    Информация о статистике ожидания по запросам отслеживается. Это значение является значением конфигурации по умолчанию.

  • OFF

    Данные статистики ожидания для каждого запроса не записываются.

< > query_capture_policy_option_list :: =

Управляет параметрами политики записи для хранилища запросов. За исключением STALE_CAPTURE_POLICY_THRESHOLD, эти параметры определяют условия OR, которые должны выполняться для запросов, записываемых в определенное пороговое значение устаревшей политики записи.

STALE_CAPTURE_POLICY_THRESHOLD = целое число { DAYS | ЧАСЫ }

Определяет период интервала ознакомления для определения того, нужно ли записать запрос. Значение по умолчанию — 1 день, можно указать от 1 часа до 7 дней. Число — это тип int.

EXECUTION_COUNT = целое число

Определяет количество выполнений запроса в течение ознакомительного периода. Значение по умолчанию — 30, то есть для порогового значения устаревшей политики записи по умолчанию запрос должен быть выполнен по меньшей мере 30 раз за один день, чтобы быть сохраненным в хранилище запросов. EXECUTION_COUNT — тип интелигент.

TOTAL_COMPILE_CPU_TIME_MS = целое число

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

TOTAL_EXECUTION_CPU_TIME_MS = целое число

Определяет общее время ЦП, затраченное на выполнение, которое запрос использовал за ознакомительный период. Значение по умолчанию — 100, то есть для порогового значения устаревшей политики записи по умолчанию запрос должен иметь общее время ЦП, затраченное на выполнение, не менее 100 мс за один день, чтобы быть сохраненным в хранилище запросов. TOTAL_EXECUTION_CPU_TIME_MS — это тип интелигенции.

< > snapshot_option ::=

Определяет уровень изоляции транзакции.

ALLOW_SNAPSHOT_ISOLATION { ON | OFF }

  • ON

    Включает параметр моментальных снимков на уровне базы данных. Если параметр включен, инструкции DML начинают создавать версии строк, даже если ни одна транзакция не использует изоляцию моментальных снимков. После установки этого параметра транзакции могут задавать уровень изоляции транзакций SNAPSHOT. Если транзакция выполняется на уровне изоляции SNAPSHOT, всем инструкциям видны данные из моментального снимка в состоянии, которое существовало в момент начала транзакции. Если транзакция выполняется с уровнем изоляции SNAPSHOT и обращается к данным нескольких баз данных, то либо параметр ALLOW_SNAPSHOT_ISOLATION должен быть установлен в состояние ON во всех базах данных, либо каждая инструкция в транзакции должна использовать подсказки блокировки при любом обращении предложения FROM к таблице базы данных, в которой параметр ALLOW_SNAPSHOT_ISOLATION установлен в состояние OFF.

  • OFF

    Отключает параметр моментальных снимков на уровне базы данных. Транзакции не могут указывать уровень изоляции SNAPSHOT.

Если вы изменяете состояние ALLOW_SNAPSHOT_ISOLATION (из ON в OFF или из OFF в ON), инструкция ALTER DATABASE не возвращает управление вызвавшей ее программе, пока все существующие транзакции в базе данных не будут зафиксированы. Если база данных уже находится в состоянии, указанном в инструкции ALTER DATABASE, управление вызвавшей программе будет возвращено немедленно. Если оператор ALTER DATABASE не возвращается быстро, используйте sys.dm_tran_active_snapshot_database_transactions , чтобы определить, существуют ли долгосрочные транзакции. Если инструкция ALTER DATABASE отменена, база данных останется в состоянии, в котором она находилась при запуске ALTER DATABASE. Вид каталога sys.databases показывает состояние транзакций с изоляцией снимков в базе данных. Если snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, оператор ALTER DATABASE .... ALLOW_SNAPSHOT_ISOLATION OFF приостанавливает шесть секунд и повторяет операцию.

Изменить состояние ALLOW_SNAPSHOT_ISOLATION невозможно, если база данных находится в режиме OFFLINE.

Если ALLOW_SNAPSHOT_ISOLATION в базе данных READ_ONLY, параметр сохраняется, если база данных будет установлена в READ_WRITE.

Текущие настройки этой опции можно определить, изучив столбец snapshot_isolation_state в каталоге sys.databases .

READ_COMMITTED_SNAPSHOT { ON | OFF }

  • ON

    Включает параметр уровня изоляции моментальных снимков READ COMMITTED на уровне базы данных. Если параметр включен, инструкции DML начинают создавать версии строк, даже если ни одна транзакция не использует изоляцию моментальных снимков. После включения этого параметра транзакции, указывающие уровень изоляции READ COMMITTED, используют управление версиями строк вместо блокировки. Данные моментального снимка видны всем инструкциям в состоянии, которое существовало на момент начала выполнения инструкции, если транзакция выполняется с уровнем изоляции READ COMMITTED.

  • OFF

    Отключает параметр уровня изоляции моментальных снимков READ COMMITTED на уровне базы данных. Транзакции с уровнем изоляции READ COMMITTED используют блокировку.

Чтобы установить параметр READ_COMMITTED_SNAPSHOT в значение ON или OFF, с базой данных не должно быть активных соединений, за исключением соединения, выполняющего команду ALTER DATABASE. Однако это не означает, что база данных должна находиться в однопользовательском режиме. Изменить состояние этого параметра невозможно, если база данных находится в режиме OFFLINE.

Если вы устанавливаете READ_COMMITTED_SNAPSHOT в базе данных READ_ONLY, параметр сохраняется при последующем READ_WRITE базы данных.

Параметр READ_COMMITTED_SNAPSHOT не может иметь значение ON для системных баз данных master, tempdb или msdb. Если изменить настройку для базы данных model, эта настройка становится значением по умолчанию для всех вновь создаваемых баз данных, кроме tempdb.

Текущие настройки этой опции можно определить, изучив столбец is_read_committed_snapshot_on в каталоге sys.databases .

Warning

Когда таблица создаётся с DURABILITY = SCHEMA_ONLY, и READ_COMMITTED_SNAPSHOT затем изменяется с ALTER DATABASEпомощью , данные в таблице теряются.

Tip

В База данных SQL Azure команда для ALTER DATABASE задания READ_COMMITTED_SNAPSHOT ON или OFF для базы данных должна выполняться в master базе данных.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

  • ON

    Если уровень изоляции транзакции установлен в любое значение ниже SNAPSHOT, все интерпретированные операции Transact-SQL в таблицах, оптимизированных для памяти, выполняются с уровнем изоляции SNAPSHOT. Примеры уровней изоляции ниже, чем моментальный снимок — READ COMMITTED или READ UNCOMMITTED. Эти операции выполняются независимо от того, установлен ли уровень изоляции транзакции явно на уровне сеанса или неявно используется значение по умолчанию.

  • OFF

    Не повышает уровень изоляции транзакции для интерпретированных операций Transact-SQL в таблицах, оптимизированных для памяти.

Изменить состояние MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT невозможно, если база данных находится в режиме OFFLINE.

Значение по умолчанию — OFF.

Текущие настройки этой опции можно определить, изучив столбец is_memory_optimized_elevate_to_snapshot_on в каталоге sys.databases .

< > sql_option ::=

Управляет параметрами соответствия ANSI на уровне базы данных.

ANSI_NULL_DEFAULT { ON | OFF }

Определяет значение по умолчанию, NULL или NOT NULL, для столбцов определяемых пользователем типов CLR, для которых в инструкциях CREATE TABLE или ALTER TABLE не указана явно допустимость значений NULL. Столбцы, определенные с ограничениями, следуют правилам ограничений независимо от того, какой этот параметр может быть.

  • ON

    Значение по умолчанию — NULL.

  • OFF

    Значением по умолчанию является NOT NULL.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют настройки уровня базы данных по умолчанию для ANSI_NULL_DEFAULT. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_NULL_DEFAULT в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. SET ANSI_NULL_DFLT_ON.

Для совместимости ANSI при установке параметра базы данных ANSI_NULL_DEFAULT в состояние ON изменяется значение по умолчанию базы данных на значение NULL.

Вы можете определить статус этой опции, изучив столбец is_ansi_null_default_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiNullDefault свойство функции DATABASEPROPERTYEX .

ANSI_NULLS { ON | OFF }

  • ON

    Результатом любого сравнения со значением NULL будет UNKNOWN.

  • OFF

    Сравнение значений, отличных от Юникода, с значением NULL, равное TRUE, если оба значения равны NULL.

Important

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

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для ANSI_NULLS. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_NULLS в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. НАБОР ANSI_NULLS.

Note

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр SET ANSI_NULLS также должен быть установлен в ON.

Вы можете определить статус этой опции, изучив столбец is_ansi_nulls_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiNullsEnabled свойство функции DATABASEPROPERTYEX .

ANSI_PADDING { ON | OFF }

  • ON

    Строки перед преобразованием дополняются до одной и той же длины. Также наполняется до той же длины перед вставкой в тип данных варчар или нварчар .

  • OFF

    Вставляет пробелы в значениях символов в столбцы varchar или nvarchar . Также оставляет заканчивающиеся нули в бинарных значениях, которые вставляются в варбинарные столбцы. Значения не подгоняются под длину столбца.

    Состояние OFF касается только определения новых столбцов.

Important

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

столбцы char(n) и бинарные(n), допускающие нулевые значения, дополняются длиной столбца при установке ANSI_PADDING в ON. Конечные пробелы и нули отбрасываются, если параметр ANSI_PADDING имеет значение OFF. Столбцы char(n) и binary(n), которые не допускают null, всегда дополняются длиной столбца.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют настройки уровня базы данных по умолчанию для ANSI_PADDING. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_PADDING в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Дополнительные сведения см. в разделе SET ANSI_PADDING.

Вы можете определить статус этой опции, изучив столбец is_ansi_padding_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiPaddingEnabled свойство функции DATABASEPROPERTYEX .

ANSI_WARNINGS { ON | OFF }

  • ON

    В случае возникновения таких ситуаций, как деление на ноль, выдаются ошибки или предупреждения. Ошибки и предупреждения также возникают тогда, когда значения NULL появляются в агрегатных функциях.

  • OFF

    Предупреждения не выводятся, а в таких ситуациях, как деление на ноль, возвращается NULL.

Note

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр SET ANSI_WARNINGS должен быть установлен в ON.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для ANSI_WARNINGS. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_WARNINGS в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. SET ANSI_WARNINGS.

Вы можете определить статус этой опции, изучив столбец is_ansi_warnings_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiWarningsEnabled свойство функции DATABASEPROPERTYEX .

ARITHABORT { ON | OFF }

  • ON

    Запрос будет завершен, если во время его выполнения возникла ошибка переполнения или деления на ноль.

  • OFF

    Когда возникает одна из этих ошибок, выводится предупреждающее сообщение. Запрос, пакет или транзакция продолжают выполняться, как если бы ошибки не произошло, даже если выводится предупреждение.

Note

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр SET ARITHABORT должен быть установлен в ON.

Вы можете определить статус этой опции, изучив столбец is_arithabort_on в каталоге sys.databases . Вы также можете определить статус, изучив IsArithmeticAbortEnabled свойство функции DATABASEPROPERTYEX .

COMPATIBILITY_LEVEL = { 170 | 160 | 150 | 140 | 130 | 120 | 110 | 100 }

Дополнительные сведения см. в уровне совместимости ALTER DATABASE.

CONCAT_NULL_YIELDS_NULL { ON | OFF }

  • ON

    Результатом операции объединения будет NULL, если любой из операндов — NULL. Например, объединение строки символов "Это" со значением NULL приведет к результату NULL вместо "Это".

  • OFF

    Значение NULL будет обработано как пустая строка символов.

Note

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр CONCAT_NULL_YIELDS_NULL должен быть установлен в ON.

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

Настройки уровня соединения, которые установлены с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для CONCAT_NULL_YIELDS_NULL. По умолчанию клиенты ODBC и OLE DB выдают параметр инструкции SET уровня подключения CONCAT_NULL_YIELDS_NULL значение ON для сеанса при подключении к экземпляру SQL Server. Дополнительные сведения см. в описании SET CONCAT_NULL_YIELDS_NULL.

Вы можете определить статус этой опции, изучив столбец is_concat_null_yields_null_on в каталоге sys.databases . Вы также можете определить статус, изучив IsNullConcat свойство функции DATABASEPROPERTYEX .

NUMERIC_ROUNDABORT { ON | OFF }

  • ON

    Если в выражении происходит потеря точности, будет сформирована ошибка.

  • OFF

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

Important

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр NUMERIC_ROUNDABORT должен быть установлен в OFF.

Статус этой опции можно определить в is_numeric_roundabort_on столбце в каталоге sys.databases . Вы также можете определить статус, изучив IsNumericRoundAbortEnabled свойство функции DATABASEPROPERTYEX .

QUOTED_IDENTIFIER { ON | OFF }

  • ON

    Двойные кавычки могут использоваться для идентификаторов с разделителями.

    Все строки, находящиеся в двойных кавычках, интерпретируются как идентификаторы объектов. Идентификаторы с разделителями не должны соответствовать правилам для идентификаторов Transact-SQL. Они могут быть ключевыми словами и включать символы, не разрешенные в идентификаторах Transact-SQL. Если двойная кавычка (") является частью идентификатора, она может быть представлена двумя двойными кавычками ("").

  • OFF

    Идентификаторы не могут быть заключены в кавычки и должны следовать всем правилам для идентификаторов Transact-SQL. Литералы могут разделяться как одинарными, так и двойными кавычками.

SQL Server также позволяет разделять идентификаторы квадратными скобками ([ и ]). Идентификаторы в скобках могут использоваться всегда, независимо от значения параметра QUOTED_IDENTIFIER. Дополнительные сведения см. в разделе "Идентификаторы базы данных".

При создании таблицы параметр QUOTED IDENTIFIER всегда сохраняется как ON в метаданных таблицы. Параметр сохраняется, даже если при создании таблицы он был установлен на OFF.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для QUOTED_IDENTIFIER. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая QUOTED_IDENTIFIER в значение ON, по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Дополнительные сведения см. в описании SET QUOTED_IDENTIFIER.

Вы можете определить статус этой опции, изучив столбец is_quoted_identifier_on в каталоге sys.databases . Вы также можете определить статус, изучив IsQuotedIdentifiersEnabled свойство функции DATABASEPROPERTYEX .

RECURSIVE_TRIGGERS { ON | OFF }

  • ON

    Рекурсивное срабатывание триггеров AFTER разрешено.

  • OFF

    Вы можете определить статус этой опции, изучив столбец is_recursive_triggers_on в каталоге sys.databases . Вы также можете определить статус, изучив IsRecursiveTriggersEnabled свойство функции DATABASEPROPERTYEX .

Note

Если параметр RECURSIVE_TRIGGERS установлен в состояние OFF, будет запрещена только прямая рекурсия. Чтобы отключить косвенную рекурсию, нужно установить параметр сервера nested triggers в состояние 0.

Вы можете определить статус этой опции, изучив is_recursive_triggers_on столбец в каталоге sys.databases или IsRecursiveTriggersEnabled свойство функции DATABASEPROPERTYEX .

< > target_recovery_time_option ::=

Указывает частоту косвенных контрольных точек для каждой базы данных. Начиная с SQL Server 2016 (13.x), значение по умолчанию для новых баз данных составляет 1 минуту, что означает, что база данных использует косвенные контрольные точки. Для старых версий значение по умолчанию равно 0, указывающее, что база данных использует автоматические контрольные точки, частота которой зависит от параметра интервала восстановления экземпляра сервера. Корпорация Майкрософт рекомендует 1 минуту для большинства систем.

TARGET_RECOVERY_TIME = target_recovery_time { СЕКУНДЫ | МИНУТЫ }

  • target_recovery_time

    Указывает максимальное время для восстановления определенной базы данных в случае сбоя. target_recovery_time — тип интелигент.

  • SECONDS

    Указывает, что target_recovery_time выражается как количество секунд.

  • MINUTES

    Указывает, что target_recovery_time выражается как количество минут.

Для получения дополнительной информации о косвенных контрольных пунктах см. Контрольные точки базы данных.

ЗАВЕРШЕНИЕ< WITH >::=

Указывает, когда откатывать незавершенные транзакции при переходе базы данных из одного состояния в другое. Если предложение завершения опущено, инструкция ALTER DATABASE будет бесконечно ожидать блокировки базы данных. Может быть указано только одно предложение завершения, которое должно следовать за предложением SET.

Note

Не все параметры базы данных могут использоваться с предложением WITH <termination>. Для получения дополнительной информации смотрите таблицу в разделе «Настройки » в разделе «Замечания» этой статьи.

  • ОТКАТ ПОСЛЕ ЦЕЛОГО ЧИСЛА [СЕКУНДЫ] | ОТКАТ НЕМЕДЛЕННЫЙ

    Указывает, нужно ли откатить транзакцию через указанное количество секунд или немедленно.

  • NO_WAIT

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

< > temporal_history_retention ::=

Задание параметров

Чтобы получить текущие настройки опций базы данных, используйте вид каталога sys.databases или DATABASEPROPERTYEX

После установки параметра базы данных новое значение вступает в силу немедленно.

Вы можете изменить значения по умолчанию для любого из параметров базы данных для всех созданных баз данных. Для этого измените соответствующий параметр базы данных model.

Не все параметры базы данных используют предложение WITH <termination> или могут быть указаны в сочетании с другими параметрами. В следующей таблице перечислены эти параметры.

Категория опционов Может быть указан с другими параметрами Может использовать предложение WITH <termination>
<auto_option> Yes No
<change_tracking_option> Yes Yes
<cursor_option> Yes No
<db_encryption_option> Yes No
<db_update_option> Yes Yes
<db_user_access_option> Yes Yes
<delayed_durability_option> Yes Yes
<parameterization_option> Yes Yes
ALLOW_SNAPSHOT_ISOLATION No No
READ_COMMITTED_SNAPSHOT No Yes
MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT Yes Yes
DATE_CORRELATION_OPTIMIZATION Yes Yes
<sql_option> Yes No
<target_recovery_time_option> No Yes

Examples

A. перевод базы данных в состояние READ_ONLY;

Изменение состояния базы данных или файловой группы на READ_ONLY или READ_WRITE требует эксклюзивного доступа к базе данных и может занять несколько секунд. В следующем примере для базы данных устанавливается режим RESTRICTED_USER, ограничивающий доступ к ней. Затем состояние базы данных AdventureWorks2025 устанавливается в READ_ONLY, а также возвращается доступ к базе данных всем пользователям.

--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET RESTRICTED_USER;
GO
ALTER DATABASE [database_name]
SET READ_ONLY
--`SET READ_ONLY` command might take a few seconds to complete.
GO
ALTER DATABASE [database_name]
SET MULTI_USER;
GO

Чтобы переключить базу данных обратно в режим чтения и записи, выполните следующее:

--Connect to [database_name];
GO
ALTER DATABASE [database_name]
SET READ_WRITE
GO

Чтобы выполнить проверку:

SELECT [name], user_access_desc, is_read_only FROM sys.databases
WHERE [name] = 'database_name'
GO

B. включение изоляции моментального снимка для базы данных;

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

--Connect to [database_name]
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO

Проверьте состояние snapshot_isolation_framework в базе данных.

--Connect to [database_name]
SELECT name, snapshot_isolation_state,
    snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'database_name';
GO

Результирующий набор показывает, что платформа изоляции моментального снимка включена.

name snapshot_isolation_state description
[database_name] 1 ON

C. включение, изменение и отключение отслеживания изменений;

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

--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);

В следующем примере демонстрируется уменьшение срока хранения до 3 дней.

--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);

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

--Connect to [database_name]
ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

D. включение хранилища запросов;

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

--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      QUERY_CAPTURE_MODE = AUTO,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60
    );

E. включение хранилища запросов с использованием статистики ожидания;

В приведенном ниже примере включается хранилище запросов и настраиваются его параметры.

--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON
    );

F. включение хранилища запросов с использованием параметров пользовательской политики записи.

В приведенном ниже примере включается хранилище запросов и настраиваются его параметры.

--Connect to [database_name]
ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON,
      QUERY_CAPTURE_MODE = CUSTOM,
      QUERY_CAPTURE_POLICY = (
        STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
        EXECUTION_COUNT = 30,
        TOTAL_COMPILE_CPU_TIME_MS = 1000,
        TOTAL_EXECUTION_CPU_TIME_MS = 100
      )
    );

* Управляемый экземпляр SQL *  

 

Управляемый экземпляр SQL Azure

Уровни совместимости — это SET параметры, но описаны уровне совместимости ALTER DATABASE.

Note

Многие опции набора базы данных можно настроить для текущей сессии с помощью операторов SET , и часто они настраиваются приложениями при подключении. Параметры инструкции SET уровня сеанса переопределяют значения ALTER DATABASE SET. Описанные в следующих разделах параметры базы данных являются значениями, которые можно задавать для сеансов, не предоставляющих явно другие значения параметра SET.

Syntax

ALTER DATABASE { database_name | Current }
SET
{
    <optionspec> [ ,...n ]
}
;

<optionspec> ::=
{
    <auto_option>
  | <change_tracking_option>
  | <cursor_option>
  | <db_encryption_option>
  | <delayed_durability_option>
  | <parameterization_option>
  | <query_store_options>
  | <snapshot_option>
  | <sql_option>
  | <target_recovery_time_option>
  | <termination>
  | <temporal_history_retention>
}
;
<auto_option> ::=
{
    AUTO_CREATE_STATISTICS { OFF | ON [ ( INCREMENTAL = { ON | OFF } ) ] }
  | AUTO_SHRINK { ON | OFF }
  | AUTO_UPDATE_STATISTICS { ON | OFF }
  | AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}

<automatic_tuning_option> ::=
{
    AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF } )
}

<change_tracking_option> ::=
{
    CHANGE_TRACKING
    {
       = OFF
     | = ON [ ( <change_tracking_option_list > [,...n] ) ]
     | ( <change_tracking_option_list> [,...n] )
    }
}

<change_tracking_option_list> ::=
   {
       AUTO_CLEANUP = { ON | OFF }
     | CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
   }

<cursor_option> ::=
{
    CURSOR_CLOSE_ON_COMMIT { ON | OFF }
}

<db_encryption_option> ::=
  ENCRYPTION { ON | OFF }

<delayed_durability_option> ::=DELAYED_DURABILITY = { DISABLED | ALLOWED | FORCED }

<parameterization_option> ::=
  PARAMETERIZATION { SIMPLE | FORCED }

<query_store_options> ::=
{
  QUERY_STORE
  {
    = OFF
    | = ON [ ( <query_store_option_list> [,... n] ) ]
    | ( < query_store_option_list> [,... n] )
    | CLEAR [ ALL ]
  }
}

<query_store_option_list> ::=
{
  OPERATION_MODE = { READ_WRITE | READ_ONLY }
  | CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = number )
  | DATA_FLUSH_INTERVAL_SECONDS = number
  | MAX_STORAGE_SIZE_MB = number
  | INTERVAL_LENGTH_MINUTES = number
  | SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }
  | QUERY_CAPTURE_MODE = { ALL | AUTO | CUSTOM | NONE }
  | MAX_PLANS_PER_QUERY = number
  | WAIT_STATS_CAPTURE_MODE = { ON | OFF }
  | QUERY_CAPTURE_POLICY = ( <query_capture_policy_option_list> [,...n] )
}

<query_capture_policy_option_list> :: =
{
    STALE_CAPTURE_POLICY_THRESHOLD = number { DAYS | HOURS }
    | EXECUTION_COUNT = number
    | TOTAL_COMPILE_CPU_TIME_MS = number
    | TOTAL_EXECUTION_CPU_TIME_MS = number
}

<snapshot_option> ::=
{
    ALLOW_SNAPSHOT_ISOLATION { ON | OFF }
  | READ_COMMITTED_SNAPSHOT { ON | OFF }
  | MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }
}
<sql_option> ::=
{
    ANSI_NULL_DEFAULT { ON | OFF }
  | ANSI_NULLS { ON | OFF }
  | ANSI_PADDING { ON | OFF }
  | ANSI_WARNINGS { ON | OFF }
  | ARITHABORT { ON | OFF }
  | COMPATIBILITY_LEVEL = { 170 | 160 | 150 | 140 | 130 | 120 | 110 | 100 }
  | CONCAT_NULL_YIELDS_NULL { ON | OFF }
  | NUMERIC_ROUNDABORT { ON | OFF }
  | QUOTED_IDENTIFIER { ON | OFF }
  | RECURSIVE_TRIGGERS { ON | OFF }
}

<temporal_history_retention>::= TEMPORAL_HISTORY_RETENTION { ON | OFF }

Arguments

database_name

Имя изменяемой базы данных.

CURRENT

CURRENT выполняет действие в текущей базе данных. CURRENT работает не со всеми параметрами и не во всех контекстах. Если CURRENT не работает, укажите имя базы данных.

< > auto_option ::=

Управляет автоматическими параметрами.

AUTO_CREATE_STATISTICS { ON | OFF }

  • ON

    Оптимизатор запросов в случае необходимости создает статистику по отдельным столбцам в предикатах запросов, чтобы улучшить планы запросов и повысить производительность запросов. Такая статистика по отдельным столбцам создается, когда оптимизатор запросов компилирует запросы. Статистика по отдельным столбцам создается только для столбцов, ни один из которых не является первым столбцом в существующем объекте статистики.

    Значение по умолчанию — ON. Для большинства баз данных рекомендуется использовать значение по умолчанию.

  • OFF

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

    Вы можете определить статус этой опции, изучив столбец is_auto_create_stats_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAutoCreateStatistics свойство функции DATABASEPROPERTYEX .

    Для получения дополнительной информации смотрите раздел «Статистические опции» в разделе Статистика.

INCREMENTAL = ON | ОТ

Присваивает AUTO_CREATE_STATISTICS значение ON, а INCREMENTAL — значение ON. Он создает автоматически создаваемые статистики как добавочные везде, где поддерживаются добавочные статистики. Значение по умолчанию — OFF. Дополнительные сведения см. в статье CREATE STATISTICS.

AUTO_SHRINK { ON | OFF }

  • ON

    Файлы базы данных являются кандидатами на периодическое сжатие. Если у вас нет определенного требования, не устанавливайте параметр базы данных AUTO_SHRINK значение ON. Дополнительные сведения см. в разделе Сжатие базы данных.

    И файлы данных, и файлы журналов могут быть автоматически сжаты. AUTO_SHRINK уменьшает размер журнала транзакций только в том случае, если вы выбрали простую модель восстановления базы данных или создали резервную копию журнала. Если этот параметр установлен в состояние OFF, файлы базы данных не будут автоматически сжиматься при периодической проверке на неиспользуемое пространство.

    При включенном параметре AUTO_SHRINK файлы будут сжаты, если более 25 процентов файла содержит неиспользуемое пространство. Параметр вызывает сжатие файла в один из двух размеров. Он сжимает до большего, если:

    • размер, в котором 25 процентов файла не используется;
    • размер файла при его создании.

    Нельзя сжать базу данных, находящуюся в состоянии только для чтения.

  • OFF

    Файлы базы данных не будут автоматически сжаты во время периодических проверок неиспользуемого пространства.

Вы можете определить статус этой опции, изучив столбец is_auto_shrink_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAutoShrink свойство функции DATABASEPROPERTYEX .

Note

В автономной базе данных параметр AUTO_SHRINK недоступен.

AUTO_UPDATE_STATISTICS { ON | OFF }

  • ON

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

    Оптимизатор запросов проверяет наличие устаревшей статистики перед компиляцией запроса и выполняет кэшированный план запроса. Оптимизатор запросов с помощью столбцов, таблиц и индексированных представлений в предикате запроса определяет, какая статистика могла устареть. Оптимизатор запросов определяет эти сведения перед компиляцией запроса. Перед запуском кэшированного плана запроса ядро СУБД проверяет, ссылается ли план запроса на актуальную статистику.

    Параметр AUTO_UPDATE_STATISTICS применяется к статистике, создаваемой для индексов и отдельных столбцов в предикатах запросов, и к статистике, создаваемой инструкцией CREATE STATISTICS. Этот параметр также применяется к отфильтрованной статистике.

    Значение по умолчанию — ON. Для большинства баз данных рекомендуется использовать значение по умолчанию.

    Используйте параметр AUTO_UPDATE_STATISTICS_ASYNC, чтобы указать режим обновления статистики: синхронный или асинхронный.

  • OFF

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

Вы можете определить статус этой опции, изучив столбец is_auto_update_stats_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAutoUpdateStatistics свойство функции DATABASEPROPERTYEX .

Для получения дополнительной информации см. раздел «Использование опций статистики по всей базе данных» в разделе Статистика.

AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

  • ON

    Указывает, что обновление статистики для параметра AUTO_UPDATE_STATISTICS выполняется асинхронно. Оптимизатор запросов не ожидает завершения обновления статистики перед компиляцией запросов.

    Установка этого параметра в состояние ON не будет иметь эффекта, если параметр AUTO_UPDATE_STATISTICS не установлен в состояние ON.

    По умолчанию параметр AUTO_UPDATE_STATISTICS_ASYNC имеет значение OFF, а оптимизатор запросов обновляет статистику в синхронном режиме.

  • OFF

    Указывает, что обновление статистики для параметра AUTO_UPDATE_STATISTICS выполняется синхронно. Оптимизатор запросов ожидает завершения обновления статистики перед компиляцией запросов.

    Установка этого параметра в значение OFF не будет иметь эффекта, если параметр AUTO_UPDATE_STATISTICS не установлен в значение ON.

Вы можете определить статус этой опции, изучив столбец is_auto_update_stats_async_on в каталоге sys.databases .

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

< > automatic_tuning_option ::=

Управление автоматическими настройками для автоматической настройки.

FORCE_LAST_GOOD_PLAN = { ПО УМОЛЧАНИЮ | НА | OFF }

Включает или отключает FORCE_LAST_GOOD_PLANопцию автоматической настройки .

  • DEFAULT

    Значение по умолчанию для Управляемый экземпляр SQL Azure — ON.

  • ON

    Ядро СУБД автоматически включает последний известный удачный план для Transact-SQL запросов, когда новый план запроса приводит к снижению производительности. Ядро СУБД непрерывно отслеживает производительность запроса Transact-SQL в форсированном плане. При наличии повышения производительности ядро СУБД продолжает использовать последний известный хороший план. Если повышение производительности не обнаружено, ядро СУБД создает новый план запроса. Оператор не работает, если Query Store не включён или не находится в режиме чтения-записи . Это значение по умолчанию.

  • OFF

    Движок базы данных сообщает о возможных регрессиях производительности запросов, вызванных изменениями плана запросов в sys.dm_db_tuning_recommendations представлении. Однако эти рекомендации не применяются автоматически. Пользователь может отслеживать активные рекомендации и устранять выявленные проблемы, применяя сценарии Transact-SQL, которые отображаются в представлении.

< > change_tracking_option ::=

Определяет параметры отслеживания изменений. Отслеживание изменений можно включить или отключить, а также установить или изменить параметры. Примеры см. раздел «Примеры » позже в этой статье.

  • ON

    Включает отслеживание изменений для базы данных. При включении отслеживания изменений также необходимо задать параметры AUTO CLEANUP и CHANGE RETENTION.

AUTO_CLEANUP = { ON | OFF }

  • ON

    Данные отслеживания изменений автоматически удаляются по истечении заданного срока хранения.

  • OFF

    Данные отслеживания изменений не удаляются из базы данных.

CHANGE_RETENTION = retention_period { ДНИ | ЧАСЫ | МИНУТЫ }

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

retention_period — целое число, задающее числовую компоненту периода удержания.

Срок хранения по умолчанию составляет 2 дня. Минимальный срок хранения составляет 1 минуту. Стандартный тип удержания — DAYS.

  • OFF

    Отключает отслеживание изменений для базы данных. Перед отключением отслеживания изменений для базы данных предварительно отключите отслеживание изменений для всех таблиц.

< > cursor_option ::=

Управляет параметрами курсора.

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

  • ON

    Любые курсоры, открытые при фиксации или откате транзакции, закрываются.

  • OFF

    Курсоры остаются открытыми при завершении транзакции; откат транзакции закрывает любые курсоры (кроме тех, которые имеют свойства INSENSITIVE или STATIC).

Настройки уровня соединения, которые установлены с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для CURSOR_CLOSE_ON_COMMIT. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая CURSOR_CLOSE_ON_COMMIT в значение OFF для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. SET CURSOR_CLOSE_ON_COMMIT.

Вы можете определить статус этой опции, изучив is_cursor_close_on_commit_on столбец в каталоге sys.databases или в свойстве IsCloseCursorsOnCommitEnabled функции DATABASEPROPERTYEX . Курсор неявно освобождается только при отключении. Для получения дополнительной информации см. DECLARE CURSOR.

< > db_encryption_option ::=

Определяет параметры шифрования базы данных.

ШИФРОВАНИЕ { ON | OFF }

Включает шифрование базы данных (ON) или отключает его (OFF). Дополнительные сведения о шифровании баз данных см. в прозрачного шифрования данных (TDE) и прозрачного шифрования данных для базы данных SQL Azure, управляемого экземпляра SQL Azure и Azure Synapse Analytics.

Если шифрование включено на уровне базы данных, все группы файлов шифруются. Все новые группы файлов наследуют зашифрованное свойство. Если для любой группы файлов в базе данных задано значение READ ONLY, операция шифрования базы данных завершается ошибкой.

Вы можете увидеть состояние шифрования базы данных с помощью sys.dm_database_encryption_keys динамического управления.

< > delayed_durability_option ::=

Управляет тем, является ли фиксация транзакций полностью устойчивой или отложенной устойчивой.

  • DISABLED

    Все транзакции, следующие за SET DISABLED, являются полностью устойчивыми. Все параметры устойчивости, заданные в блоке ATOMIC или инструкции COMMIT, не учитываются.

  • ALLOWED

    Все транзакции, следующие за SET ALLOWED, являются полностью устойчивыми или отложенными устойчивыми в зависимости от параметра устойчивости, заданного в блоке ATOMIC или инструкции COMMIT.

  • FORCED

    Все транзакции, следующие за SET FORCED, являются отложенными устойчивыми. Все параметры устойчивости, заданные в блоке ATOMIC или инструкции COMMIT, не учитываются.

< > PARAMETERIZATION_option ::=

Управляет параметром параметризации.

ПАРАМЕТРИЗАЦИЯ { SIMPLE | ПРИНУДИТЕЛЬНО }

  • SIMPLE

    Запросы параметризуются на основании поведения базы данных по умолчанию.

  • FORCED

SQL Server параметризирует все запросы в базе данных.

Текущие настройки этой опции можно определить, изучив столбец is_parameterization_forced в каталоге sys.databases .

< > query_store_options ::=

  • НА | ВЫКЛЮЧЕНО | ЧИСТО [ ВСЕ ]

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

    • ON

      Включает хранилище запросов.

    • OFF

      Отключает хранилище запросов. Это значение по умолчанию.

    • CLEAR

      Удаляет содержимое хранилища запросов.

OPERATION_MODE

Описывает режим работы хранилища запросов. Допустимые значения: READ_ONLY и READ_WRITE. В режиме READ_WRITE хранилище запросов собирает и сохраняет план запросов и статистические данные о выполнении. В режиме READ_ONLY можно считывать данные из хранилища запросов, но новые сведения не добавляются. Если максимальное выделенное пространство хранилища запросов было исчерпано, хранилище запросов изменяет режим работы на READ_ONLY.

CLEANUP_POLICY

Описывает политику хранения данных хранилища запросов. STALE_QUERY_THRESHOLD_DAYS определяет количество дней хранения сведений о запросе в хранилище. STALE_QUERY_THRESHOLD_DAYS — это тип bigint. Значение по умолчанию — 30. Для SQL Database Basic edition по умолчанию — 7 дней.

DATA_FLUSH_INTERVAL_SECONDS

Определяет частоту, с которой данные, записанные в хранилище запросов, сохраняются на диск. Для оптимизации производительности данные, собранные хранилищем запросов, асинхронно записываются на диск. Для настройки частоты этой асинхронной передачи используется аргумент DATA_FLUSH_INTERVAL_SECONDS. DATA_FLUSH_INTERVAL_SECONDS тип bigint. По умолчанию значение — 900 (15 мин).

MAX_STORAGE_SIZE_MB

Определяет свободное место, выделенное для хранилища запросов. MAX_STORAGE_SIZE_MB тип bigint. Значение по умолчанию — 100 МБ.

Ограничение MAX_STORAGE_SIZE_MB не применяется строго. Размер хранилища проверяется только в том случае, если хранилище запросов записывает данные на диск. Этот интервал задается параметром DATA_FLUSH_INTERVAL_SECONDS или параметром диалогового окна хранилища запросов Management Studio Интервал записи данных на диск. Значение по умолчанию — 900 секунд (или 15 минут).

Если хранилище запросов нарушило ограничение MAX_STORAGE_SIZE_MB между проверками размера хранилища, оно переходит в режим только для чтения. Если параметр SIZE_BASED_CLEANUP_MODE включен, также активируется механизм очистки для принудительного применения ограничения MAX_STORAGE_SIZE_MB.

После очистки достаточного пространства режим хранилища запросов автоматически переключается на чтение и запись.

Important

  • Если вы считаете, что для захвата рабочей нагрузки требуется более 10 ГБ дискового пространства, вам, вероятно, стоит пересмотреть и оптимизировать нагрузку для повторного использования планов запросов (например, с помощью принудительной параметризации или корректировки конфигураций Query Store).
  • Начиная с SQL Server 2019 (15.x) и в База данных SQL Azure можно задать QUERY_CAPTURE_MODE значение CUSTOM для дополнительного управления политикой отслеживания запросов.
  • MAX_STORAGE_SIZE_MBОграничение параметра составляет 10 240 МБ на Управляемый экземпляр SQL Azure.

INTERVAL_LENGTH_MINUTES

Определяет временной интервал вычисления статистических данных о среде выполнения в хранилище запросов. Для оптимизации использования свободного места статистические данные о среде выполнения в хранилище вычисляются для фиксированного временного интервала. Этот интервал настраивается с помощью аргумента INTERVAL_LENGTH_MINUTES. INTERVAL_LENGTH_MINUTES — это тип bigint. Значение по умолчанию — 60.

SIZE_BASED_CLEANUP_MODE = { AUTO | OFF }

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

  • OFF

    Очистка на основе размера не активируется автоматически.

  • AUTO

    Очистка по размеру автоматически активируется, когда размер на диске достигает 90 % max_storage_size_mb. Эта очистка сначала удаляет самые дешевые и самые старые запросы. Она останавливается примерно на 80 % max_storage_size_mb. Это значение конфигурации по умолчанию.

SIZE_BASED_CLEANUP_MODE относится к типу нварчар.

QUERY_CAPTURE_MODE { ВСЕ | АВТО | CUSTOM | НЕТ }

Определяет режим записи текущего активного запроса.

  • ALL

    Записываются все запросы.

  • AUTO

    Записываются соответствующие запросы на основе показателя выполнения и объема потребления ресурсов. Это значение конфигурации по умолчанию для База данных SQL Azure.

  • NONE

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

QUERY_CAPTURE_MODE относится к типу нварчар.

MAX_PLANS_PER_QUERY

Целое число, представляющее максимальное количество поддерживаемых планов для каждого запроса. MAX_PLANS_PER_QUERY — тип интеллекта. Значение по умолчанию — 200.

WAIT_STATS_CAPTURE_MODE { ON | OFF }

Определяет, фиксируются ли статистические данные ожидания для каждого запроса.

  • ON

    Информация о статистике ожидания по запросам отслеживается. Это значение является значением конфигурации по умолчанию.

  • OFF

    Данные статистики ожидания для каждого запроса не записываются.

< > query_capture_policy_option_list :: =

Управляет параметрами политики записи для хранилища запросов. За исключением STALE_CAPTURE_POLICY_THRESHOLD, эти параметры определяют условия OR, которые должны выполняться для запросов, записываемых в определенное пороговое значение устаревшей политики записи.

STALE_CAPTURE_POLICY_THRESHOLD = целое число { DAYS | ЧАСЫ }

Определяет период интервала ознакомления для определения того, нужно ли записать запрос. Значение по умолчанию — 1 день, можно указать от 1 часа до 7 дней.

EXECUTION_COUNT = целое число

Определяет количество выполнений запроса в течение ознакомительного периода. Значение по умолчанию — 30, то есть для порогового значения устаревшей политики записи по умолчанию запрос должен быть выполнен по меньшей мере 30 раз за один день, чтобы быть сохраненным в хранилище запросов. EXECUTION_COUNT — тип интелигент.

TOTAL_COMPILE_CPU_TIME_MS = целое число

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

TOTAL_EXECUTION_CPU_TIME_MS = целое число

Определяет общее время ЦП, затраченное на выполнение, которое запрос использовал за ознакомительный период. Значение по умолчанию — 100, то есть для порогового значения устаревшей политики записи по умолчанию запрос должен иметь общее время ЦП, затраченное на выполнение, не менее 100 мс за один день, чтобы быть сохраненным в хранилище запросов. TOTAL_EXECUTION_CPU_TIME_MS — это тип интелигенции.

< > snapshot_option ::=

Определяет уровень изоляции транзакции.

ALLOW_SNAPSHOT_ISOLATION { ON | OFF }

  • ON

    Включает параметр моментальных снимков на уровне базы данных. Если параметр включен, инструкции DML начинают создавать версии строк, даже если ни одна транзакция не использует изоляцию моментальных снимков. После установки этого параметра транзакции могут задавать уровень изоляции транзакций SNAPSHOT. Если транзакция выполняется на уровне изоляции SNAPSHOT, всем инструкциям видны данные из моментального снимка в состоянии, которое существовало в момент начала транзакции. Если транзакция выполняется с уровнем изоляции SNAPSHOT и обращается к данным нескольких баз данных, то либо параметр ALLOW_SNAPSHOT_ISOLATION должен быть установлен в состояние ON во всех базах данных, либо каждая инструкция в транзакции должна использовать подсказки блокировки при любом обращении предложения FROM к таблице базы данных, в которой параметр ALLOW_SNAPSHOT_ISOLATION установлен в состояние OFF.

  • OFF

    Отключает параметр моментальных снимков на уровне базы данных. Транзакции не могут указывать уровень изоляции SNAPSHOT.

Если вы изменяете состояние ALLOW_SNAPSHOT_ISOLATION (из ON в OFF или из OFF в ON), инструкция ALTER DATABASE не возвращает управление вызвавшей ее программе, пока все существующие транзакции в базе данных не будут зафиксированы. Если база данных уже находится в состоянии, указанном в инструкции ALTER DATABASE, управление вызвавшей программе будет возвращено немедленно. Если оператор ALTER DATABASE не возвращается быстро, используйте sys.dm_tran_active_snapshot_database_transactions , чтобы определить, существуют ли долгосрочные транзакции. Если инструкция ALTER DATABASE отменена, база данных останется в состоянии, в котором она находилась при запуске ALTER DATABASE. Вид каталога sys.databases показывает состояние транзакций с изоляцией снимков в базе данных. Если snapshot_isolation_state_desc = IN_TRANSITION_TO_ON, оператор ALTER DATABASE ... ALLOW_SNAPSHOT_ISOLATION OFF приостанавливает шесть секунд и повторяет операцию.

Изменить состояние ALLOW_SNAPSHOT_ISOLATION невозможно, если база данных находится в режиме OFFLINE.

Параметры ALLOW_SNAPSHOT_ISOLATION можно изменить для баз данных master, model, msdb и tempdb. Параметр сохраняется каждый раз, когда экземпляр ядро СУБД останавливается и перезапускается при изменении параметраtempdb. При изменении настройки для базы данных model эта настройка становится значением по умолчанию для любых вновь создаваемых баз данных, за исключением tempdb.

По умолчанию этот параметр равен ON для баз данных master и msdb.

Текущие настройки этой опции можно определить, изучив столбец snapshot_isolation_state в каталоге sys.databases .

READ_COMMITTED_SNAPSHOT { ON | OFF }

  • ON

    Включает параметр READ_COMMITTED_SNAPSHOT на уровне базы данных. Если параметр включен, инструкции DML начинают создавать версии строк, даже если ни одна транзакция не использует изоляцию моментальных снимков. После включения этого параметра транзакции, указывающие уровень изоляции READ COMMITTED, используют управление версиями строк вместо блокировки. Данные моментального снимка видны всем инструкциям в состоянии, которое существовало на момент начала выполнения инструкции, если транзакция выполняется с уровнем изоляции READ COMMITTED.

  • OFF

    Отключает параметр уровня изоляции моментальных снимков READ COMMITTED на уровне базы данных. Транзакции с уровнем изоляции READ COMMITTED используют блокировку.

Чтобы установить параметр READ_COMMITTED_SNAPSHOT равным ON или OFF, с базой данных не должно быть активных соединений, за исключением соединения, выполняющего команду ALTER DATABASE. Однако это не означает, что база данных должна находиться в однопользовательском режиме. Изменить состояние этого параметра невозможно, если база данных находится в режиме OFFLINE.

Параметр READ_COMMITTED_SNAPSHOT не может иметь значение ON для системных баз данных master, tempdb или msdb. При изменении настройки для базы данных model эта настройка становится значением по умолчанию для любых создаваемых новых баз данных, за исключением tempdb.

Текущие настройки этой опции можно определить, изучив столбец is_read_committed_snapshot_on в каталоге sys.databases .

Warning

При создании таблицы с УСТОЙЧИВОСТЬЮ = SCHEMA_ONLY, а READ_COMMITTED_SNAPSHOT впоследствии изменяется с помощью ALTER DATABASE, данные в таблице теряются.

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

  • ON

    Если уровень изоляции транзакции установлен в любое значение ниже SNAPSHOT, все интерпретированные операции Transact-SQL в таблицах, оптимизированных для памяти, выполняются с уровнем изоляции SNAPSHOT. Примеры уровней изоляции ниже, чем моментальный снимок — READ COMMITTED или READ UNCOMMITTED. Эти операции выполняются независимо от того, установлен ли уровень изоляции транзакции явно на уровне сеанса или неявно используется значение по умолчанию.

  • OFF

    Не повышает уровень изоляции транзакции для интерпретированных операций Transact-SQL в таблицах, оптимизированных для памяти.

Изменить состояние MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT невозможно, если база данных находится в режиме OFFLINE.

Значение по умолчанию — OFF.

Текущие настройки этой опции можно определить, изучив столбец is_memory_optimized_elevate_to_snapshot_on в каталоге sys.databases .

< > sql_option ::=

Управляет параметрами соответствия ANSI на уровне базы данных.

ANSI_NULL_DEFAULT { ON | OFF }

Определяет значение по умолчанию, NULL или NOT NULL, для столбцов определяемых пользователем типов CLR, для которых в инструкциях CREATE TABLE или ALTER TABLE не указана явно допустимость значений NULL. Столбцы, определенные с ограничениями, следуют правилам ограничений независимо от того, какой этот параметр может быть.

  • ON

    Значение по умолчанию — NULL.

  • OFF

    Значением по умолчанию является NOT NULL.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют настройки уровня базы данных по умолчанию для ANSI_NULL_DEFAULT. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_NULL_DEFAULT в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. SET ANSI_NULL_DFLT_ON.

Для совместимости ANSI при установке параметра базы данных ANSI_NULL_DEFAULT в состояние ON изменяется значение по умолчанию базы данных на значение NULL.

Вы можете определить статус этой опции, изучив столбец is_ansi_null_default_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiNullDefault свойство функции DATABASEPROPERTYEX .

ANSI_NULLS { ON | OFF }

  • ON

    Результатом любого сравнения со значением NULL будет UNKNOWN.

  • OFF

    Сравнение значений, отличных от Юникода, с значением NULL, равное TRUE, если оба значения равны NULL.

Important

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

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для ANSI_NULLS. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_NULLS в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. НАБОР ANSI_NULLS.

Important

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр SET ANSI_NULLS также должен быть установлен в ON.

Вы можете определить статус этой опции, изучив столбец is_ansi_nulls_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiNullsEnabled свойство функции DATABASEPROPERTYEX .

ANSI_PADDING { ON | OFF }

  • ON

    Строки перед преобразованием дополняются до одной и той же длины. Также наполняется до той же длины перед вставкой в тип данных варчар или нварчар .

  • OFF

    Вставляет пробелы в значениях символов в столбцы varchar или nvarchar . Также оставляет заканчивающиеся нули в бинарных значениях, которые вставляются в варбинарные столбцы. Значения не подгоняются под длину столбца.

    Состояние OFF касается только определения новых столбцов.

Important

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

столбцы char(n) и бинарные(n), допускающие нулевые значения, дополняются длиной столбца при установке ANSI_PADDING в ON. Конечные пробелы и нули отбрасываются, если параметр ANSI_PADDING имеет значение OFF. Столбцы char(n) и binary(n), которые не допускают null, всегда дополняются длиной столбца.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют настройки уровня базы данных по умолчанию для ANSI_PADDING. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_PADDING в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Дополнительные сведения см. в разделе SET ANSI_PADDING.

Вы можете определить статус этой опции, изучив столбец is_ansi_padding_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiPaddingEnabled свойство функции DATABASEPROPERTYEX .

ANSI_WARNINGS { ON | OFF }

  • ON

    В случае возникновения таких ситуаций, как деление на ноль, выдаются ошибки или предупреждения. Ошибки и предупреждения также возникают тогда, когда значения NULL появляются в агрегатных функциях.

  • OFF

    Предупреждения не выводятся, а в таких ситуациях, как деление на ноль, возвращается NULL.

Important

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр SET ANSI_WARNINGS должен быть установлен в ON.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для ANSI_WARNINGS. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая ANSI_WARNINGS в значение ON для сеанса по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Для получения дополнительной информации см. SET ANSI_WARNINGS.

Вы можете определить статус этой опции, изучив столбец is_ansi_warnings_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAnsiWarningsEnabled свойство функции DATABASEPROPERTYEX .

ARITHABORT { ON | OFF }

  • ON

    Запрос будет завершен, если во время его выполнения возникла ошибка переполнения или деления на ноль.

  • OFF

    Когда возникает одна из этих ошибок, выводится предупреждающее сообщение. Запрос, пакет или транзакция продолжают выполняться, как если бы ошибки не произошло, даже если выводится предупреждение.

Important

SET ARITHABORT необходимо включить (ON) при создании или внесении изменений в индексы в вычисляемых столбцах или индексированных представлениях.

Вы можете определить статус этой опции, изучив столбец is_arithabort_on в каталоге sys.databases . Вы также можете определить статус, изучив IsArithmeticAbortEnabled свойство функции DATABASEPROPERTYEX .

COMPATIBILITY_LEVEL = { 170 | 160 | 150 | 140 | 130 | 120 | 110 | 100 }

Дополнительные сведения см. в уровне совместимости ALTER DATABASE.

CONCAT_NULL_YIELDS_NULL { ON | OFF }

  • ON

    Результатом операции объединения будет NULL, если любой из операндов — NULL. Например, объединение строки символов "Это" со значением NULL приведет к результату NULL вместо "Это".

  • OFF

    Значение NULL будет обработано как пустая строка символов.

Important

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр CONCAT_NULL_YIELDS_NULL должен быть установлен в ON.

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

Настройки уровня соединения, которые установлены с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для CONCAT_NULL_YIELDS_NULL. По умолчанию клиенты ODBC и OLE DB выдают параметр инструкции SET уровня подключения CONCAT_NULL_YIELDS_NULL значение ON для сеанса при подключении к экземпляру SQL Server. Дополнительные сведения см. в описании SET CONCAT_NULL_YIELDS_NULL.

Вы можете определить статус этой опции, изучив столбец is_concat_null_yields_null_on в каталоге sys.databases . Вы также можете определить статус, изучив IsNullConcat свойство функции DATABASEPROPERTYEX .

NUMERIC_ROUNDABORT { ON | OFF }

  • ON

    Если в выражении происходит потеря точности, будет сформирована ошибка.

  • OFF

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

Important

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр NUMERIC_ROUNDABORT должен быть установлен в OFF.

Статус этой опции можно определить в is_numeric_roundabort_on столбце в каталоге sys.databases . Вы также можете определить статус, изучив IsNumericRoundAbortEnabled свойство функции DATABASEPROPERTYEX .

QUOTED_IDENTIFIER { ON | OFF }

  • ON

    Двойные кавычки могут использоваться для идентификаторов с разделителями.

    Все строки, находящиеся в двойных кавычках, интерпретируются как идентификаторы объектов. Идентификаторы с разделителями не должны соответствовать правилам для идентификаторов Transact-SQL. Они могут быть ключевыми словами и включать символы, не разрешенные в идентификаторах Transact-SQL. Если двойная кавычка (") является частью идентификатора, она может быть представлена двумя двойными кавычками ("").

  • OFF

    Идентификаторы не могут быть заключены в кавычки и должны следовать всем правилам для идентификаторов Transact-SQL. Литералы могут разделяться как одинарными, так и двойными кавычками.

SQL Server также позволяет разделять идентификаторы квадратными скобками ([ и ]). Идентификаторы в скобках могут использоваться всегда, независимо от значения параметра QUOTED_IDENTIFIER. Дополнительные сведения см. в разделе "Идентификаторы базы данных".

При создании таблицы параметр QUOTED IDENTIFIER всегда сохраняется как ON в метаданных таблицы. Параметр сохраняется, даже если при создании таблицы он был установлен на OFF.

Настройки уровня соединения, установленные с помощью инструкции SET, переопределяют параметры базы данных по умолчанию для QUOTED_IDENTIFIER. Клиенты ODBC и OLE DB задают параметр уровня соединения инструкции SET, устанавливая QUOTED_IDENTIFIER в значение ON, по умолчанию. Клиенты запускают инструкцию при подключении к экземпляру SQL Server. Дополнительные сведения см. в описании SET QUOTED_IDENTIFIER.

Вы можете определить статус этой опции, изучив столбец is_quoted_identifier_on в каталоге sys.databases . Вы также можете определить статус, изучив IsQuotedIdentifiersEnabled свойство функции DATABASEPROPERTYEX .

RECURSIVE_TRIGGERS { ON | OFF }

  • ON

    Рекурсивное срабатывание триггеров AFTER разрешено.

  • OFF

    Вы можете определить статус этой опции, изучив столбец is_recursive_triggers_on в каталоге sys.databases . Вы также можете определить статус, изучив IsRecursiveTriggersEnabled свойство функции DATABASEPROPERTYEX .

    Note

    Если параметр RECURSIVE_TRIGGERS установлен в состояние OFF, будет запрещена только прямая рекурсия. Чтобы отключить косвенную рекурсию, нужно установить параметр сервера nested triggers в состояние 0.

Вы можете определить статус этой опции, изучив is_recursive_triggers_on столбец в каталоге sys.databases или IsRecursiveTriggersEnabled свойство функции DATABASEPROPERTYEX .

< > target_recovery_time_option ::=

target_recovery_time_option не поддерживается в Azure SQL Managed Instance.

Указывает частоту косвенных контрольных точек для каждой базы данных. Начиная с SQL Server 2016 (13.x), значение по умолчанию для новых баз данных составляет 1 минуту, что означает, что база данных использует косвенные контрольные точки. Для старых версий значение по умолчанию равно 0, указывающее, что база данных использует автоматические контрольные точки, частота которой зависит от параметра интервала восстановления экземпляра сервера. Корпорация Майкрософт рекомендует 1 минуту для большинства систем.

ЗАВЕРШЕНИЕ< WITH >::=

Указывает, когда откатывать незавершенные транзакции при переходе базы данных из одного состояния в другое. Если предложение завершения опущено, инструкция ALTER DATABASE будет бесконечно ожидать блокировки базы данных. Может быть указано только одно предложение завершения, которое должно следовать за предложением SET.

Note

Не все параметры базы данных могут использоваться с предложением WITH <termination>. Для получения дополнительной информации смотрите таблицу в разделе «Настройки » в разделе «Замечания» этой статьи.

  • ОТКАТ ПОСЛЕ ЦЕЛОГО ЧИСЛА [СЕКУНДЫ] | ОТКАТ НЕМЕДЛЕННЫЙ

    Указывает, нужно ли откатить транзакцию через указанное количество секунд или немедленно.

  • NO_WAIT

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

< > temporal_history_retention ::=

Задание параметров

Чтобы получить текущие настройки опций базы данных, используйте вид каталога sys.databases или DATABASEPROPERTYEX

После установки параметра базы данных новое значение вступает в силу немедленно.

Вы можете изменить значения по умолчанию для любого из параметров базы данных для всех созданных баз данных. Для этого измените соответствующий параметр базы данных в системной базе данных model.

Examples

A. включение изоляции моментального снимка для базы данных;

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

USE master;
GO
ALTER DATABASE [database_name]
SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check the state of the snapshot_isolation_framework
-- in the database.
SELECT name, snapshot_isolation_state,
    snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'[database_name]';
GO

Результирующий набор показывает, что платформа изоляции моментального снимка включена.

name snapshot_isolation_state description
[database_name] 1 ON

B. включение, изменение и отключение отслеживания изменений;

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

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);

В следующем примере демонстрируется уменьшение срока хранения до 3 дней.

ALTER DATABASE [database_name]
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);

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

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

C. включение хранилища запросов;

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

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      QUERY_CAPTURE_MODE = AUTO,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60
    );

D. включение хранилища запросов с использованием статистики ожидания;

В приведенном ниже примере включается хранилище запросов и настраиваются его параметры.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON
    );

E. включение хранилища запросов с использованием параметров пользовательской политики записи.

В приведенном ниже примере включается хранилище запросов и настраиваются его параметры.

ALTER DATABASE [database_name]
SET QUERY_STORE = ON
    (
      OPERATION_MODE = READ_WRITE,
      CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 90 ),
      DATA_FLUSH_INTERVAL_SECONDS = 900,
      MAX_STORAGE_SIZE_MB = 1024,
      INTERVAL_LENGTH_MINUTES = 60,
      SIZE_BASED_CLEANUP_MODE = AUTO,
      MAX_PLANS_PER_QUERY = 200,
      WAIT_STATS_CAPTURE_MODE = ON,
      QUERY_CAPTURE_MODE = CUSTOM,
      QUERY_CAPTURE_POLICY = (
        STALE_CAPTURE_POLICY_THRESHOLD = 24 HOURS,
        EXECUTION_COUNT = 30,
        TOTAL_COMPILE_CPU_TIME_MS = 1000,
        TOTAL_EXECUTION_CPU_TIME_MS = 100
      )
    );

* Azure Synapse
Аналитика*
 

 

Azure Synapse Analytics

Syntax

ALTER DATABASE { database_name }
SET
{
    <optionspec> [ ,...n ]
}
;

<option_spec>::=
{
    <auto_option>
  | <db_encryption_option>
  | <query_store_options>
  | <result_set_caching>
  | <snapshot_option>
}
;

<auto_option> ::=
{
    AUTO_CREATE_STATISTICS { OFF | ON }
}

<db_encryption_option> ::=
{
    ENCRYPTION { ON | OFF }
}

<query_store_option> ::=
{
    QUERY_STORE { OFF | ON }
}

<result_set_caching_option> ::=
{
    RESULT_SET_CACHING { ON | OFF }
}

<snapshot_option> ::=
{
    READ_COMMITTED_SNAPSHOT { ON | OFF }
}

Arguments

database_name

Имя изменяемой базы данных.

< > auto_option ::=

Управляет автоматическими параметрами.

AUTO_CREATE_STATISTICS { ON | OFF }

  • ON

    Оптимизатор запросов в случае необходимости создает статистику по отдельным столбцам в предикатах запросов, чтобы улучшить планы запросов и повысить производительность запросов. Такая статистика по отдельным столбцам создается, когда оптимизатор запросов компилирует запросы. Статистика по отдельным столбцам создается только для столбцов, ни один из которых не является первым столбцом в существующем объекте статистики.

    Значение по умолчанию — ON. Для большинства баз данных рекомендуется использовать значение по умолчанию.

  • OFF

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

Эта команда должна выполняться при подключении к базе данных user.

Вы можете определить статус этой опции, изучив столбец is_auto_create_stats_on в каталоге sys.databases . Вы также можете определить статус, изучив IsAutoCreateStatistics свойство функции DATABASEPROPERTYEX .

Для получения дополнительной информации см. раздел «Использование опций статистики по всей базе данных» в разделе Статистика.

< > db_encryption_option ::=

Определяет параметры шифрования базы данных.

ШИФРОВАНИЕ { ON | OFF }

  • ON

    Включает шифрование базы данных.

  • OFF

    Отключает шифрование базы данных.

Дополнительные сведения о шифровании баз данных см. в прозрачного шифрования данных (TDE) и прозрачного шифрования данных для базы данных SQL Azure, управляемого экземпляра SQL Azure и Azure Synapse Analytics.

Если шифрование включено на уровне базы данных, все группы файлов шифруются. Все новые группы файлов наследуют зашифрованное свойство. Если для любой группы файлов в базе данных задано значение READ ONLY, операция шифрования базы данных завершается ошибкой.

Состояние шифрования базы данных и состояние сканирования шифрования можно просмотреть с помощью динамического административного представления sys.dm_database_encryption_keys.

< > query_store_option ::=

Указывает, включено ли хранилище запросов в этом хранилище данных.

QUERY_STORE { ON | OFF }

  • ON

    Включает хранилище запросов.

  • OFF

    Отключает хранилище запросов. OFF — значение по умолчанию.

Note

Для Azure Synapse Analytics необходимо выполнить ALTER DATABASE SET QUERY_STORE из пользовательской базы данных. Выполнение этой инструкции из другого экземпляра хранилища данных не поддерживается.

Note

Для Azure Synapse Analytics хранилище запросов можно включить как на других платформах, но дополнительные параметры конфигурации не поддерживаются.

< > result_set_caching_option ::=

Область применения: Azure Synapse Analytics

Указывает, кэшируется ли результат запроса в базе данных.

RESULT_SET_CACHING { ON | OFF}

  • ON

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

  • OFF

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

Эта команда должна выполняться при подключении к базе данных master. Изменение данного параметра базы данных применяется немедленно. Затраты на хранение связаны с кэшированием результирующих наборов запроса. После отключения кэширования результатов для базы данных ранее сохраненный кэш результатов немедленно удаляется из хранилища Azure Synapse.

Выполните эту команду, чтобы проверить конфигурацию кэширования результирующего набора базы данных. Если кэширование результирующих наборов включено, is_result_set_caching_on возвращает значение 1.

SELECT name, is_result_set_caching_on FROM sys.databases
WHERE name = <'Your_Database_Name'>

Выполните эту команду, чтобы проверить, был ли запрос выполнен с использованием кэшированного результата. Столбец result_cache_hit возвращает значение 1 для попадания кэша, 0 для пропуска кэша и отрицательных значений по причинам, почему кэширование результирующих наборов не использовалось. Проверьте sys.dm_pdw_exec_requests для подробностей.

SELECT request_id, command, result_cache_hit FROM sys.dm_pdw_exec_requests
WHERE request_id = <'Your_Query_Request_ID'>

Note

Кэширование результирующих наборов нельзя использовать в сочетании с DECRYPTBYKEY. Если эту криптографическую функцию все же нужно использовать, убедитесь, что кэширование результирующих наборов отключено (на уровне сеанса или уровне базы данных) на момент выполнения.

Important

Операции по созданию кэша результирующего набора и извлечению данных из кэша выполняются в управляющем узле экземпляра хранилища данных. Если кэширование результирующего набора включено, выполнение запросов, возвращающих большие (например, более одного миллиона строк) наборы, может привести к высокой загрузке ЦП на управляющем узле и снизить общую скорость реакции экземпляра. Как правило, такие запросы используются в ходе исследования данных, а также при выполнении операций извлечения, преобразования и загрузки. Чтобы избежать чрезмерной загрузки управляющего узла и снижения производительности, перед выполнение запросов такого типа пользователям следует отключить кэширование результирующего набора для базы данных.

Дополнительные сведения о настройке производительности при кэшировании результирующего набора см. в статье Руководство по настройке производительности.

Permissions

Для задания параметра RESULT_SET_CACHING пользователю требуется имя входа участника на уровне сервера (созданное процессом подготовки) или членство в роли базы данных dbmanager.

< > snapshot_option ::=

Область применения: Azure Synapse Analytics

Задает уровень изоляции транзакции в базе данных.

READ_COMMITTED_SNAPSHOT { ON | OFF }

  • ON

    Включает параметр READ_COMMITTED_SNAPSHOT на уровне базы данных.

  • OFF

    Отключает параметр READ_COMMITTED_SNAPSHOT на уровне базы данных.

Эта команда должна выполняться при подключении к базе данных master. Включение или отключение READ_COMMITTED_SNAPSHOT для пользовательской базы данных убивает все открытые подключения к этой базе данных. Это изменение следует внести во время периода обслуживания базы данных или подождите, пока не будет активного подключения к базе данных, за исключением подключения, выполняемого командой ALTER DATABASE. База данных не обязательно должна находиться в однопользовательском режиме. Изменение параметра READ_COMMITTED_SNAPSHOT на уровне сеанса не поддерживается. Чтобы проверить этот параметр для базы данных, проверьте столбец is_read_committed_snapshot_on в sys.databases.

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

Permissions

Чтобы задать параметр READ_COMMITTED_SNAPSHOT, пользователю необходимо разрешение ALTER для базы данных.

Examples

Проверка настройки статистики для базы данных

SELECT name, is_auto_create_stats_on FROM sys.databases

Включение хранилище запросов для базы данных

ALTER DATABASE [database_name]
SET QUERY_STORE = ON;

Включение кэширования результирующих наборов для базы данных

-- Run this command when connecting to the MASTER database

ALTER DATABASE [database_name]
SET RESULT_SET_CACHING ON;

Проверка кэширования результирующих наборов для базы данных

SELECT name, is_result_set_caching_on
FROM sys.databases;

Включение параметра READ_COMMITTED_SNAPSHOT для базы данных

Выполните эту команду при подключении к базе данных master.

ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON;

Хранилище данных Microsoft Fabric

 

Хранилище данных Microsoft Fabric

Используется ALTER DATABASE ... SET для управления хранилищем Microsoft Fabric.

Syntax

-- Microsoft Fabric Data Warehouse

ALTER DATABASE { warehouse_name | CURRENT }
SET
{
    <option_spec> [ ,...n ] 
}

<option_spec> ::=
{
    <data_lake_log_publishing>
  | <vorder>
  | <timestamp>
  | <result_set_caching>
}
;

<data_lake_log_publishing> ::=
{
    DATA_LAKE_LOG_PUBLISHING { PAUSED | AUTO }
}

<vorder> ::=
{
    VORDER = OFF
}

<timestamp> ::=
{
    TIMESTAMP = {CURRENT_TIMESTAMP | 'YYYY-MM-DDTHH:MM:SS.SS' }  
}


<result_set_caching> ::=
{    
    RESULT_SET_CACHING { ON | OFF } 
}

Arguments

DATA_LAKE_LOG_PUBLISHING

Приостановка или возобновление публикации журнала Delta Lake. Дополнительные сведения см. в разделе "Публикация журналов Delta Lake".

VORDER

Может отключить поведение V-Order. Дополнительные сведения см. в разделе об отключении поведения V-Order в хранилище.

TIMESTAMP

Обновляет метку времени для существующего моментального снимка хранилища в хранилище данных Fabric. Метка времени должна быть указана в часовом поясе UTC. Для получения дополнительной информации смотрите снимки склада.

RESULT_SET_CACHING

Включает или отключает кэширование результирующих наборов (предварительная версия) для текущего элемента. Дополнительные сведения см. в разделе "Кэширование результирующих наборов".

Permissions

Пользователь должен быть членом ролей администратора, участника или участника в рабочей области Fabric.

Examples

A. Приостановка публикации журналов Delta Lake

Следующая команда T-SQL приостанавливает публикацию журнала Delta Lake в текущем контексте хранилища.

ALTER DATABASE CURRENT SET DATA_LAKE_LOG_PUBLISHING = PAUSED;

Чтобы проверить текущий статус публикации журналов Delta Lake на всех складах вашего рабочего пространства, используйте следующий код T-SQL для запроса sys.databases в новом окне запроса:

SELECT [name], [DATA_LAKE_LOG_PUBLISHING_DESC] FROM sys.databases;

B. Установка и проверка кэширования результирующих наборов (предварительная версия)

Следующая команда T-SQL позволит элементу MyDataWarehouse начать создание и применение кэша результирующих SELECT наборов (предварительная версия) к применимым запросам. Дополнительные сведения см. в разделе "Кэширование результирующих наборов".

ALTER DATABASE [MyDataWarehouse] SET RESULT_SET_CACHING ON;

Столбец is_result_set_caching_on из sys.databases затем можно проверить, чтобы убедиться, что кэширование наборов результатов (предпросмотр) включено.

SELECT [name], [is_result_set_caching_on] FROM sys.databases;