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


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

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

Примечание.

Для установки некоторых параметров с помощью инструкции ALTER DATABASE может потребоваться эксклюзивный доступ к базе данных. Если инструкция 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.

Примечание.

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

Синтаксис

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>
  | <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>
  | <parameterization_option>
  | <query_store_options>
  | <recovery_option>
  | <remote_data_archive_option>
  | <service_broker_option>
  | <snapshot_option>
  | <sql_option>
  | <suspend_for_snapshot_backup>
  | <target_recovery_time_option>
  | <termination>
  | <temporal_history_retention>
  | <data_retention_policy>
}
;

<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
    }
}

<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 = { 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 }

Аргументы

database_name

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

ТЕКУЩИЙ

Область применения: 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. Примеры и дополнительные сведения см. в разделе Ускоренное восстановление баз данных.

<> auto_option ::=

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

AUTO_CLOSE { ON | OFF }

  • DNS

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

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

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

  • ВЫКЛ.

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

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

Примечание.

Параметр 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 }

  • DNS

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

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

  • ВЫКЛ.

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

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

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

INCREMENTAL = ON | OFF

Область применения: SQL Server (начиная с SQL Server 2014 (12.x)) и База данных SQL Azure

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

AUTO_SHRINK { ON | OFF }

  • DNS

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

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

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

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

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

  • ВЫКЛ.

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

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

Примечание.

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

AUTO_UPDATE_STATISTICS { ON | OFF }

  • DNS

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

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

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

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

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

  • ВЫКЛ.

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

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

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

AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

  • DNS

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

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

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

  • ВЫКЛ.

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

    Примечание.

    Установка этого параметра в значение 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 = { DEFAULT | ON | OFF }

  • ПО УМОЛЧАНИЮ

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

  • DNS

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

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

  • ВЫКЛ.

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

<> change_tracking_option ::=

Область применения: SQL Server и База данных SQL Azure

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

  • DNS

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

  • AUTO_CLEANUP = { ON | OFF }

    • DNS

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

    • ВЫКЛ.

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

  • CHANGE_RETENTION = retention_period { ДНЕЙ | ЧАСЫ | MINUTES }

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

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

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

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

<> containment_option ::=

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

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

CONTAINMENT = { NONE | PARTIAL}

  • NONE

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

  • PARTIAL

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

<> cursor_option ::=

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

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

  • DNS

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

  • ВЫКЛ.

    Курсоры остаются открытыми при завершении транзакции; откат транзакции закрывает любые курсоры (кроме тех, которые имеют свойства 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 | GLOBAL }

Применяется к: SQL Server

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

  • ЛОКАЛЬНО

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

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

  • Глобальные

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

    Курсор неявно освобождается только при отключении. Дополнительные сведения см. в описании DECLARE CURSOR (Transact-SQL).

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

<> temporal_history_retention ::=

TEMPORAL_HISTORY_RETENTION { ON | OFF }

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

<> data_retention_policy ::=

Область применения: только для пограничных вычислений SQL Azure

DATA_RETENTION { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

<database_mirroring>

Применяется к: SQL Server

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

<> date_correlation_optimization_option ::=

Применяется к: SQL Server

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

DATE_CORRELATION_OPTIMIZATION { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

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

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

<> db_encryption_option ::=

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

ENCRYPTION { ON | OFF | SUSPEND | RESUME }

  • DNS

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

  • ВЫКЛ.

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

  • SUSPEND

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

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

  • RESUME

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

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

Дополнительные сведения см. в статьях о прозрачном шифровании данных и прозрачном шифровании данных для Базы данных SQL Azure.

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

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

<> db_state_option ::=

Применяется к: SQL Server

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

  • OFFLINE

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

  • ONLINE

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

  • АВАРИЙНЫЙ РЕЖИМ

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

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

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

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

<> db_update_option ::=

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

  • READ_ONLY

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

    Примечание.

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

  • READ_WRITE

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

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

Примечание.

В База данных 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))

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

  • ОТКЛЮЧЕНО

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

  • РАЗРЕШЕНО

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

  • ПРИНУДИТЕЛЬНО

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

<> external_access_option ::=

Применяется к: SQL Server

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

DB_CHAINING { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

Внимание

Экземпляр 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.

TRUSTWORTHY { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

    Параметр 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))

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

Внимание

Этот параметр допустим только в случае, если параметр 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 = { OFF | READ_ONLY | FULL }

  • ВЫКЛ.

    Нетранзакционный доступ к данным таблиц 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 — значение по умолчанию.

  • DNS

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

Этот параметр имеет значение ON для всех системных баз данных. Только системная база данных tempdb поддерживает значение OFF.

<> PARAMETERIZATION_option ::=

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

PARAMETERIZATION { SIMPLE | FORCED }

  • ПРОСТОЙ

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

  • ПРИНУДИТЕЛЬНО

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

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

<> query_store_options ::=

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

ON | OFF [ ( FORCED ) ] | CLEAR [ ALL ]

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

  • DNS

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

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

  • OFF [ ( FORCED ) ]

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

    Примечание.

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

  • CLEAR [ ALL ]

    Удаляет данные, связанные с запросами, из хранилища запросов. 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.

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

Внимание

Если представляется, что для отслеживания рабочей нагрузки потребуется более 10 ГБ дискового пространства, то, вероятно, придется пересмотреть и оптимизировать рабочую нагрузку для повторного использования планов запросов (например, с использованием принудительной параметризации) или изменить конфигурации хранилища запросов. Начиная с 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 }

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

  • АВТОМАТИЧЕСКИ

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

  • ВЫКЛ.

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

SIZE_BASED_CLEANUP_MODE имеет тип nvarchar.

QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }

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

Примечание.

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

  • ВСЕ

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

  • АВТОМАТИЧЕСКИ

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

  • NONE

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

  • ПОЛЬЗОВАТЕЛЬСКАЯ

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

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

MAX_PLANS_PER_QUERY

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

WAIT_STATS_CAPTURE_MODE { ON | OFF }

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

Контролирует, будет ли отслеживаться статистика времени ожидания по запросам.

  • DNS

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

  • ВЫКЛ.

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

<> 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 = integer { DAYS | HOURS }

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

  • EXECUTION_COUNT = integer

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

  • TOTAL_COMPILE_CPU_TIME_MS = integer

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

  • TOTAL_EXECUTION_CPU_TIME_MS = integer

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

<> recovery_option ::=

Применяется к: SQL Server

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

  • FULL

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

  • BULK_LOGGED

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

  • ПРОСТОЙ

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

    Внимание

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

Модель восстановления по умолчанию определяется моделью восстановления системной базы данных model. Дополнительные сведения о выборе подходящей модели восстановления см. в статье Модели восстановления (SQL Server).

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

TORN_PAGE_DETECTION { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

Внимание

Структура синтаксиса 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.

    Примечание.

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

  • Значение TORN_PAGE_DETECTION использует меньше ресурсов, но обеспечивает минимальный вариант защиты CHECKSUM.

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

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

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

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.

Внимание

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 } ) | ОТ

  • DNS

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

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

    • SERVER = <server_name>

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

    • CREDENTIAL = <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 Active Directory).
      • Удаленный сервер Azure настроен для поддержки проверки подлинности Microsoft Entra.
      • Учетная запись службы, под которой выполняется экземпляр SQL Server, должна быть настроена как учетная запись dbmanager или sysadmin на удаленном сервере Azure.

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

  • ВЫКЛ.

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

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

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

<> 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 не может быть включен, пока база данных является субъектом в конфигурации зеркального отображения базы данных.

Примечание.

Параметр 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 }

  • DNS

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

  • ВЫКЛ.

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

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

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

<> snapshot_option ::=

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

ALLOW_SNAPSHOT_ISOLATION { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

Если вы изменяете состояние ALLOW_SNAPSHOT_ISOLATION (из ON в OFF или из OFF в ON), инструкция 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 }

  • DNS

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

  • ВЫКЛ.

    Отключает параметр уровня изоляции моментальных снимков 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. Если изменить настройку для базы данных tempdb, эта настройка становится значением по умолчанию для всех вновь создаваемых баз данных, кроме model.

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

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

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

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

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

  • DNS

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

  • ВЫКЛ.

    Не повышает уровень изоляции транзакции для интерпретированных операций 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. Столбцы, определенные с ограничениями, следуют правилам ограничения независимо от этой настройки.

  • DNS

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

  • ВЫКЛ.

    Значение по умолчанию для неопределенного столбца — 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 }

  • DNS

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

  • ВЫКЛ.

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

Внимание

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

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

Внимание

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

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

ANSI_PADDING { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

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

Внимание

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

Столбцы с типами char(n) и binary(n), допускающие значения NULL, выравниваются по длине столбца, если параметр 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 }

  • DNS

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

  • ВЫКЛ.

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

Внимание

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр 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 }

  • DNS

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

  • ВЫКЛ.

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

Внимание

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

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

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

Дополнительные сведения см. в статье Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).

CONCAT_NULL_YIELDS_NULL { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

Внимание

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр 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 }

  • DNS

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

  • ВЫКЛ.

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

    Внимание

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

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

QUOTED_IDENTIFIER { ON | OFF }

  • DNS

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

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

  • ВЫКЛ.

    Идентификаторы не могут быть заключены в кавычки и должны следовать всем правилам для идентификаторов 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 }

  • DNS

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

  • ВЫКЛ.

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

Примечание.

Если параметр 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.

MODE = COPY_ONLY

Необязательно. Использует режим 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 { СЕКУНД | MINUTES }

  • target_recovery_time

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

  • SECONDS

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

  • МИНУТЫ

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

Сведения о косвенных контрольных точках см. в статье Контрольные точки базы данных (SQL Server).

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

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

Примечание.

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

  • ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE

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

  • NO_WAIT

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

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

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

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

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

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

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

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

OFFLINE

ONLINE

MODIFY_NAME

COLLATE

READ_ONLY

READ_WRITE

MODIFY FILEGROUP DEFAULT

MODIFY FILEGROUP READ_WRITE

MODIFY FILEGROUP 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 Это сообщение добавляется в журнал каждые пять минут при сбросе кэша в течение этого интервала времени.

Примеры

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

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

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

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

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

Примечание.

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

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

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

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

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 описание
[имя_базы_данных] 1 DNS

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

В следующем примере демонстрируется включение отслеживания изменений для базы данных AdventureWorks2022 и установка 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);

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

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

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

Область применения: 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

Уровни совместимости являются параметрами инструкции SET, но описаны в отдельной статье Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).

Примечание.

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

Синтаксис

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 }

Аргументы

database_name

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

  • ТЕКУЩИЙ

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

<> auto_option ::=

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

AUTO_CREATE_STATISTICS { ON | OFF }

  • DNS

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

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

  • ВЫКЛ.

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

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

Дополнительные сведения см. в разделе "Параметры статистики" статьи Статистика.

INCREMENTAL = ON | OFF

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

AUTO_SHRINK { ON | OFF }

  • DNS

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

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

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

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

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

  • ВЫКЛ.

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

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

Примечание.

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

AUTO_UPDATE_STATISTICS { ON | OFF }

  • DNS

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

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

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

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

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

  • ВЫКЛ.

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

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

    Дополнительные сведения см. в разделе "Параметры статистики" статьи Статистика.

AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

  • DNS

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

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

    По умолчанию параметр AUTO_UPDATE_STATISTICS_ASYNC имеет значение 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 | INHERIT | CUSTOM }

  • АВТОМАТИЧЕСКИ

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

  • НАСЛЕДОВАТЬ

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

  • ПОЛЬЗОВАТЕЛЬСКАЯ

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

CREATE_INDEX = { DEFAULT | ON | OFF }

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

  • ПО УМОЛЧАНИЮ

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

  • DNS

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

  • ВЫКЛ.

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

DROP_INDEX = { DEFAULT | ON | OFF }

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

  • ПО УМОЛЧАНИЮ

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

  • DNS

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

  • ВЫКЛ.

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

FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF }

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

  • ПО УМОЛЧАНИЮ

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

  • DNS

    Ядро СУБД автоматически включает последний известный удачный план для Transact-SQL запросов, когда новый план запроса приводит к снижению производительности. Ядро СУБД непрерывно отслеживает производительность запроса Transact-SQL в форсированном плане. В случае повышения производительности Компонент Database Engine будет продолжать использовать последний известный удачный план. Если повышений производительности нет, Компонент Database Engine создаст новый план запроса. Инструкция завершится ошибкой, если хранилище запросов не включено или не находится в режиме Чтение и запись.

  • ВЫКЛ.

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

<> change_tracking_option ::=

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

  • DNS

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

    • AUTO_CLEANUP = { ON | OFF }

      • DNS

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

      • ВЫКЛ.

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

    • CHANGE_RETENTION = retention_period { ДНЕЙ | ЧАСЫ | MINUTES }

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

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

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

  • ВЫКЛ.

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

<> cursor_option ::=

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

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

  • DNS

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

  • ВЫКЛ.

    Курсоры остаются открытыми при завершении транзакции; откат транзакции закрывает любые курсоры (кроме тех, которые имеют свойства 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 (Transact-SQL).

<> db_encryption_option ::=

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

ENCRYPTION { ON | OFF }

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

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

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

<> db_update_option ::=

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

  • READ_ONLY

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

    Примечание.

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

  • READ_WRITE

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

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

Примечание.

В База данных 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 ::=

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

  • ОТКЛЮЧЕНО

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

  • РАЗРЕШЕНО

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

  • ПРИНУДИТЕЛЬНО

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

<> PARAMETERIZATION_option ::=

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

PARAMETERIZATION { SIMPLE | FORCED }

  • ПРОСТОЙ

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

  • ПРИНУДИТЕЛЬНО

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

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

<> query_store_options ::=

  • ON | OFF | CLEAR [ ALL ]

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

    • DNS

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

    • ВЫКЛ.

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

      Примечание.

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

    • ОЧИСТИТЬ

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

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 Basic по умолчанию используется 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.

Примечание.

В База данных SQL Azure значение по умолчанию отличается по уровню MAX_STORAGE_SIZE_MB служб следующим образом: Premium, критически важный для бизнеса и Гипермасштабирование: 1024 МБ; Стандартное и общее назначение: 100 МБ; Базовый: 10 МБ Максимально допустимое MAX_STORAGE_SIZE_MB значение равно 10 240 МБ.

Примечание.

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

Внимание

Если представляется, что для отслеживания рабочей нагрузки потребуется более 10 ГБ дискового пространства, то, вероятно, придется пересмотреть и оптимизировать рабочую нагрузку для повторного использования планов запросов (например, с использованием принудительной параметризации) или изменить конфигурации хранилища запросов. Начиная с 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 }

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

  • ВЫКЛ.

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

  • АВТОМАТИЧЕСКИ

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

SIZE_BASED_CLEANUP_MODE имеет тип nvarchar.

QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }

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

Примечание.

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

  • ВСЕ

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

  • АВТОМАТИЧЕСКИ

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

  • NONE

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

  • ПОЛЬЗОВАТЕЛЬСКАЯ

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

QUERY_CAPTURE_MODE имеет тип nvarchar.

MAX_PLANS_PER_QUERY

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

WAIT_STATS_CAPTURE_MODE { ON | OFF }

Контролирует, будет ли отслеживаться статистика времени ожидания по запросам.

  • DNS

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

  • ВЫКЛ.

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

<> query_capture_policy_option_list :: =

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

STALE_CAPTURE_POLICY_THRESHOLD = integer { DAYS | HOURS }

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

EXECUTION_COUNT = integer

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

TOTAL_COMPILE_CPU_TIME_MS = integer

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

TOTAL_EXECUTION_CPU_TIME_MS = integer

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

<> snapshot_option ::=

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

ALLOW_SNAPSHOT_ISOLATION { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

Если вы изменяете состояние ALLOW_SNAPSHOT_ISOLATION (из ON в OFF или из OFF в ON), инструкция 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 }

  • DNS

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

  • ВЫКЛ.

    Отключает параметр уровня изоляции моментальных снимков 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. Если изменить настройку для базы данных tempdb, эта настройка становится значением по умолчанию для всех вновь создаваемых баз данных, кроме model.

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

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

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

Совет

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

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

  • DNS

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

  • ВЫКЛ.

    Не повышает уровень изоляции транзакции для интерпретированных операций 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. Столбцы, определенные с ограничениями, следуют правилам ограничения независимо от этой настройки.

  • DNS

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

  • ВЫКЛ.

    Значением по умолчанию является 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 }

  • DNS

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

  • ВЫКЛ.

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

Внимание

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

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

Примечание.

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

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

ANSI_PADDING { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

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

Внимание

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

Столбцы с типами char(n) и binary(n), допускающие значения NULL, выравниваются по длине столбца, если параметр 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 }

  • DNS

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

  • ВЫКЛ.

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

Примечание.

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр 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 }

  • DNS

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

  • ВЫКЛ.

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

Примечание.

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

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

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

Дополнительные сведения см. в статье Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).

CONCAT_NULL_YIELDS_NULL { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

Примечание.

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр 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 }

  • DNS

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

  • ВЫКЛ.

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

Внимание

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

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

QUOTED_IDENTIFIER { ON | OFF }

  • DNS

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

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

  • ВЫКЛ.

    Идентификаторы не могут быть заключены в кавычки и должны следовать всем правилам для идентификаторов 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 }

  • DNS

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

  • ВЫКЛ.

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

Примечание.

Если параметр 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 { СЕКУНД | MINUTES }

  • target_recovery_time

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

  • SECONDS

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

  • МИНУТЫ

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

Сведения о косвенных контрольных точках см. в статье Контрольные точки базы данных (SQL Server).

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

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

Примечание.

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

  • ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE

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

  • NO_WAIT

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

<> temporal_history_retention ::=

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

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

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

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

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

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

Примеры

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

Для изменения состояния базы данных или файловой группы на READ_ONLY или READ_WRITE требуется монопольный доступ к базе данных. Выполнение этого процесса может занять несколько секунд. В следующем примере для базы данных устанавливается режим RESTRICTED_USER, ограничивающий доступ к ней. Затем состояние базы данных AdventureWorks2022 устанавливается в 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 may 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. включение изоляции моментального снимка для базы данных;

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

--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 описание
[имя_базы_данных] 1 DNS

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

В следующем примере демонстрируется включение отслеживания изменений для базы данных AdventureWorks2022 и установка 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);

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

--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
    );

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

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

--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 (Transact-SQL).

Примечание.

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

Синтаксис

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 = { 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 }

Аргументы

database_name

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

ТЕКУЩИЙ

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

<> auto_option ::=

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

AUTO_CREATE_STATISTICS { ON | OFF }

  • DNS

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

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

  • ВЫКЛ.

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

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

    Дополнительные сведения см. в разделе "Параметры статистики" статьи Статистика.

INCREMENTAL = ON | OFF

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

AUTO_SHRINK { ON | OFF }

  • DNS

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

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

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

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

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

  • ВЫКЛ.

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

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

Примечание.

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

AUTO_UPDATE_STATISTICS { ON | OFF }

  • DNS

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

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

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

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

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

  • ВЫКЛ.

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

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

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

AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

  • DNS

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

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

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

  • ВЫКЛ.

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

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

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

Дополнительные сведения, описывающие условия применения синхронного и асинхронного обновлений статистики, см. в подразделе "Использование параметров статистики на уровне базы данных" раздела Статистика.

<> automatic_tuning_option ::=

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

FORCE_LAST_GOOD_PLAN = { DEFAULT | ON | OFF }

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

  • ПО УМОЛЧАНИЮ

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

  • DNS

    Ядро СУБД автоматически включает последний известный удачный план для Transact-SQL запросов, когда новый план запроса приводит к снижению производительности. Ядро СУБД непрерывно отслеживает производительность запроса Transact-SQL в форсированном плане. В случае повышения производительности Компонент Database Engine будет продолжать использовать последний известный удачный план. Если повышений производительности нет, Компонент Database Engine создаст новый план запроса. Инструкция завершится ошибкой, если хранилище запросов не включено или не находится в режиме Чтение и запись. Это значение по умолчанию.

  • ВЫКЛ.

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

<> change_tracking_option ::=

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

  • DNS

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

AUTO_CLEANUP = { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

CHANGE_RETENTION = retention_period { ДНЕЙ | ЧАСЫ | MINUTES }

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

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

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

  • ВЫКЛ.

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

<> cursor_option ::=

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

CURSOR_CLOSE_ON_COMMIT { ON | OFF }

  • DNS

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

  • ВЫКЛ.

    Курсоры остаются открытыми при завершении транзакции; откат транзакции закрывает любые курсоры (кроме тех, которые имеют свойства 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 (Transact-SQL).

<> db_encryption_option ::=

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

ENCRYPTION { ON | OFF }

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

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

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

<> delayed_durability_option ::=

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

  • ОТКЛЮЧЕНО

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

  • РАЗРЕШЕНО

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

  • ПРИНУДИТЕЛЬНО

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

<> PARAMETERIZATION_option ::=

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

PARAMETERIZATION { SIMPLE | FORCED }

  • ПРОСТОЙ

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

  • ПРИНУДИТЕЛЬНО

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

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

<> query_store_options ::=

  • ON | OFF | CLEAR [ ALL ]

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

    • DNS

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

    • ВЫКЛ.

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

    • ОЧИСТИТЬ

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

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 Basic по умолчанию используется 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.

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

Внимание

  • Если представляется, что для отслеживания рабочей нагрузки потребуется более 10 ГБ дискового пространства, то, вероятно, придется пересмотреть и оптимизировать рабочую нагрузку для повторного использования планов запросов (например, с использованием принудительной параметризации) или изменить конфигурации хранилища запросов.
  • Начиная с 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 }

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

  • ВЫКЛ.

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

  • АВТОМАТИЧЕСКИ

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

SIZE_BASED_CLEANUP_MODE имеет тип nvarchar.

QUERY_CAPTURE_MODE { ALL | AUTO | CUSTOM | NONE }

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

  • ВСЕ

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

  • АВТОМАТИЧЕСКИ

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

  • NONE

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

QUERY_CAPTURE_MODE имеет тип nvarchar.

MAX_PLANS_PER_QUERY

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

WAIT_STATS_CAPTURE_MODE { ON | OFF }

Контролирует, будет ли отслеживаться статистика времени ожидания по запросам.

  • DNS

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

  • ВЫКЛ.

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

<> query_capture_policy_option_list :: =

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

STALE_CAPTURE_POLICY_THRESHOLD = integer { DAYS | HOURS }

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

EXECUTION_COUNT = integer

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

TOTAL_COMPILE_CPU_TIME_MS = integer

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

TOTAL_EXECUTION_CPU_TIME_MS = integer

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

<> snapshot_option ::=

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

ALLOW_SNAPSHOT_ISOLATION { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

Если вы изменяете состояние ALLOW_SNAPSHOT_ISOLATION (из ON в OFF или из OFF в ON), инструкция 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 }

  • DNS

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

  • ВЫКЛ.

    Отключает параметр уровня изоляции моментальных снимков 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.

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

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

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

  • DNS

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

  • ВЫКЛ.

    Не повышает уровень изоляции транзакции для интерпретированных операций 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. Столбцы, определенные с ограничениями, следуют правилам ограничения независимо от этой настройки.

  • DNS

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

  • ВЫКЛ.

    Значением по умолчанию является 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 }

  • DNS

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

  • ВЫКЛ.

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

Внимание

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

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

Внимание

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

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

ANSI_PADDING { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

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

Внимание

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

Столбцы с типами char(n) и binary(n), допускающие значения NULL, выравниваются по длине столбца, если параметр 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 }

  • DNS

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

  • ВЫКЛ.

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

Внимание

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр 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 }

  • DNS

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

  • ВЫКЛ.

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

Внимание

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

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

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

Дополнительные сведения см. в статье Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).

CONCAT_NULL_YIELDS_NULL { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

Внимание

При создании или управлении индексами, основанными на вычисляемых столбцах или индексированных представлениях, параметр 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 }

  • DNS

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

  • ВЫКЛ.

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

Внимание

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

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

QUOTED_IDENTIFIER { ON | OFF }

  • DNS

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

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

  • ВЫКЛ.

    Идентификаторы не могут быть заключены в кавычки и должны следовать всем правилам для идентификаторов 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 }

  • DNS

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

  • ВЫКЛ.

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

    Примечание.

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

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

<> target_recovery_time_option ::=

target_recovery_time_option не поддерживается в Управляемом экземпляре SQL Azure.

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

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

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

Примечание.

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

  • ROLLBACK AFTER integer [SECONDS] | ROLLBACK IMMEDIATE

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

  • NO_WAIT

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

<> temporal_history_retention ::=

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

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

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

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

Примеры

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

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

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 описание
[имя_базы_данных] 1 DNS

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

В следующем примере демонстрируется включение отслеживания изменений для базы данных AdventureWorks2022 и установка 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);

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

ALTER DATABASE [database_name]
SET CHANGE_TRACKING = OFF;

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

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

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
    );

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

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

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
Analytics *
 

 

Azure Synapse Analytics

Синтаксис

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 }
}

Аргументы

database_name

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

<> auto_option ::=

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

AUTO_CREATE_STATISTICS { ON | OFF }

  • DNS

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

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

  • ВЫКЛ.

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

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

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

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

<> db_encryption_option ::=

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

ENCRYPTION { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

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

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

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

<> query_store_option ::=

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

QUERY_STORE { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

Примечание.

Для Azure Synapse Analytics необходимо выполнить ALTER DATABASE SET QUERY_STORE из пользовательской базы данных. Выполнение этой инструкции из другого экземпляра хранилища данных не поддерживается.

Примечание.

Для Azure Synapse Analytics хранилище запросов можно включить так же, как на других платформах, но дополнительные параметры конфигурации не поддерживаются.

<> result_set_caching_option ::=

Область применения: Azure Synapse Analytics

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

RESULT_SET_CACHING { ON | OFF}

  • DNS

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

  • ВЫКЛ.

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

Эта команда должна выполняться при подключении к базе данных 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'>

Примечание.

Кэширование результирующих наборов нельзя использовать в сочетании с DECRYPTBYKEY. Если эту криптографическую функцию все же нужно использовать, убедитесь, что кэширование результирующих наборов отключено (на уровне сеанса или уровне базы данных) на момент выполнения.

Внимание

Операции по созданию кэша результирующего набора и извлечению данных из кэша выполняются в управляющем узле экземпляра хранилища данных. Если кэширование результирующего набора включено, выполнение запросов, возвращающих большие (например, более одного миллиона строк) наборы, может привести к высокой загрузке ЦП на управляющем узле и снизить общую скорость реакции экземпляра. Как правило, такие запросы используются в ходе исследования данных, а также при выполнении операций извлечения, преобразования и загрузки. Чтобы избежать чрезмерной загрузки управляющего узла и снижения производительности, перед выполнение запросов такого типа пользователям следует отключить кэширование результирующего набора для базы данных.

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

Разрешения

Для задания параметра RESULT_SET_CACHING пользователю требуется имя входа участника на уровне сервера (созданное процессом подготовки) или членство в роли базы данных dbmanager.

<> snapshot_option ::=

Область применения: Azure Synapse Analytics

Задает уровень изоляции транзакции в базе данных.

READ_COMMITTED_SNAPSHOT { ON | OFF }

  • DNS

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

  • ВЫКЛ.

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

Эта команда должна выполняться при подключении к базе данных master. Включение или отключение параметра READ_COMMITTED_SNAPSHOT для пользовательской базы данных приводит к уничтожению всех открытых соединений с этой базой данных. Это изменение можно выполнить во время периода обслуживания базы данных или дождаться, пока не останется активных подключений к базе данных, кроме подключения, выполняющего команду ALTER DATABASE. База данных не обязательно должна находиться в однопользовательском режиме. Изменение параметра READ_COMMITTED_SNAPSHOT на уровне сеанса не поддерживается. Чтобы проверить этот параметр для базы данных, проверьте столбец is_read_committed_snapshot_on в sys.databases.

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

Разрешения

Чтобы задать параметр READ_COMMITTED_SNAPSHOT, пользователю необходимо разрешение ALTER для базы данных.

Примеры

Проверка настройки статистики для базы данных

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.

Синтаксис

-- Microsoft Fabric

ALTER DATABASE { warehouse_name | CURRENT }
SET
{
    <option_spec> [ ,...n ] 
}

<option_spec> ::=
{
    <data_lake_log_publishing>
  | <vorder>
}
;

<data_lake_log_publishing> ::=
{
    DATA_LAKE_LOG_PUBLISHING { PAUSED | AUTO }
}

<vorder> ::=
{
    VORDER = OFF
}

Замечания

В настоящее время приостановка публикации журналов Delta Lake и отключение поведения V-Order в хранилище являются единственными вариантами ALTER DATABASE ... SET использования в Microsoft Fabric.

Разрешения

Пользователь должен быть членом ролей администратора, участника или участника в рабочей области Fabric.

Примеры

А. Приостановка публикации журналов Delta Lake

Следующая команда T-SQL приостанавливает публикацию журнала Delta Lake в текущем контексте хранилища.

ALTER DATABASE CURRENT SET DATA_LAKE_LOG_PUBLISHING = PAUSED;

Чтобы проверить текущее состояние публикации журнала Delta Lake во всех хранилищах рабочей области, используйте следующий код T-SQL для запроса sys.database (Transact-SQL) в новом окне запроса:

SELECT [name], [DATA_LAKE_LOG_PUBLISHING_DESC] FROM sys.databases;