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

 

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

Примечание

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

Область применения: SQL Server (начиная с SQL Server 2008 до текущей версии).Параметры ALLOW_SNAPSHOT_ISOLATION, CHANGE_TRACKING, CURSOR_CLOSE_ON_COMMIT, db_update_option, READ_COMMITTED_SNAPSHOT, RESTRICTED_USER и sql_option применяются к База данных SQL V12 (предварительной версии в некоторых регионах).

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

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

<optionspec> ::= 
{
    <auto_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>
  | <parameterization_option>
  | <query_store_options> 
  | <recovery_option> 
  | <target_recovery_time_option>
  | <service_broker_option>
  | <snapshot_option>
  | <sql_option> 
}

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

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

<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<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_SIZE_MB = number 
    | INTERVAL_LENGTH_MINUTES = number}

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

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

<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 = { 90 | 100 | 110 | 120}
  | 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
}

Аргументы

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

  • CURRENT

    Область применения: начиная с SQL Server 2012 до SQL Server 2014.

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

<auto_option> ::=

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

  • AUTO_CLOSE { ON | OFF }

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

      База данных автоматически открывается, если пользователь снова пытается подключиться к ней.Например, с помощью инструкции USE database_name.Если база данных аккуратно закрыта во время установки параметра AUTO_CLOSE в состояние ON, она не будет повторно открываться при попытках использовать ее, пока компонент Компонент Database Engine не будет перезапущен. 

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

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

    Примечание

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

    Состояние этого параметра можно определить, проверив столбец 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 с пакетом обновления 2 (SP2) и выше для каждого удаленного хранилища кэша в кэше планов журнал ошибок SQL Server содержит следующее информационное сообщение: «SQL Server обнаружил %d экземпляров, записанных на диск хранилищ кэша для хранилища кэша "%s" (части кэша планов) в результате операций по обслуживанию или изменению конфигурации базы данных».Это сообщение добавляется в журнал каждые пять минут при сбросе кэша в течение этого интервала времени.

  • AUTO_CREATE_STATISTICS { ON | OFF }

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

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

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

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

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

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

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

  • AUTO_SHRINK { ON | OFF }

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

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

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

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

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

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

    Примечание

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

  • AUTO_UPDATE_STATISTICS { ON | OFF }

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

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

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

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

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

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

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

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

  • AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

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

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

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

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

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

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

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

<change_tracking_option> ::=

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

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

  • AUTO_CLEANUP = { ON | OFF }

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

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

  • CHANGE_RETENTION =retention_period { ДНИ | ЧАСЫ | МИНУТЫ }
    Указывает минимальный срок хранения данных отслеживания изменений в базе данных.Данные удаляются, только если для параметра AUTO_CLEANUP установлено значение ON.

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

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

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

<containment_option> ::=

Область применения: с SQL Server 2012 до SQL Server 2014, База данных SQL V12.

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

  • CONTAINMENT = { NONE | PARTIAL}

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

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

<cursor_option> ::=

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

  • CURSOR_CLOSE_ON_COMMIT { ON | OFF }

    • ON
      Любые курсоры, открытые при завершении или откате транзакции, будут закрыты.

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

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

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

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

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

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

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

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

<database_mirroring>

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

<date_correlation_optimization_option> ::=

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

  • DATE_CORRELATION_OPTIMIZATION { ON | OFF }

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

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

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

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

<db_encryption_option> ::=

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

  • ENCRYPTION {ON | OFF}

    Область применения: с SQL Server 2012 до SQL Server 2014, База данных SQL V12.

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

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

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

<db_state_option> ::=

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

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

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

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

Примечание

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

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

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

<db_update_option> ::=

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

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

    Примечание

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

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

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

<db_user_access_option> ::=

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

  • SINGLE_USER
    Указывает, что только один пользователь одновременно может обращаться к базе данных.Если параметр 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
    Предложение RESTRICTED_USER позволяет подключаться к базе данных только членам предопределенных ролей базы данных db_owner и предопределенной роли сервера dbcreator и sysadmin, количество соединений при этом не ограничивается.Все соединения с базой данных будут отключены на период времени, определяемый завершающим предложением инструкции ALTER DATABASE.После того как база данных перешла в состояние RESTRICTED_USER, попытки подключения пользователей, не соответствующими описанным выше условиям, будут отклонены.

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

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

<delayed_durability_option> ::=

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

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

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

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

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

<external_access_option> ::=

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

  • DB_CHAINING { ON | OFF }

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

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

    Важно!

    Экземпляр SQL Server использует этот параметр, если параметр сервера cross db ownership chaining имеет значение 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 }

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

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

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

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

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

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

  • DEFAULT_FULLTEXT_LANGUAGE

    Область применения: начиная с SQL Server 2012 до SQL Server 2014.

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

    Важно!

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

  • DEFAULT_LANGUAGE

    Область применения: начиная с SQL Server 2012 до SQL Server 2014.

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

  • NESTED_TRIGGERS

    Область применения: начиная с SQL Server 2012 до SQL Server 2014.

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

  • TRANSFORM_NOISE_WORDS

    Область применения: начиная с SQL Server 2012 до SQL Server 2014.

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

  • TWO_DIGIT_YEAR_CUTOFF

    Область применения: начиная с SQL Server 2012 до SQL Server 2014.

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

<FILESTREAM_option> ::=

Область применения: начиная с SQL Server 2012 до SQL Server 2014.

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

  • NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }

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

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

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

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

<parameterization_option> ::=

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

  • PARAMETERIZATION { SIMPLE | FORCED }

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

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

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

<query_store_options> ::=

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

Примечание

В настоящий момент это предварительная версия функции.Чтобы использовать хранилище запросов, необходимо подтвердить и согласиться, что реализация хранилища запросов соответствует предварительным условиям лицензионного соглашения (например, Enterprise Agreement, соглашения для Microsoft Azure или Microsoft Online Subscription), а также всем применимым дополнительным условиям использования для предварительной версии Microsoft Azure https://azure.microsoft.com/ru-ru/support/legal/preview-supplemental-terms/.

  • ON | OFF | CLEAR [ ALL ]
    Указывает, включено ли хранилище запросов в этой базе данных, а также управляет удалением содержимого хранилища запросов.ON включает хранилище запросов.OFF отключает хранилище запросов.CLEAR удаляет содержимое хранилища запросов.

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

  • CLEANUP_POLICY
    Описание политики хранения данных хранилища запросов.STALE_QUERY_THRESHOLD_DAYS определяет количество дней для хранения сведений о запросе в хранилище.STALE_QUERY_THRESHOLD_DAYS имеет тип bigint.

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

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

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

<recovery_option> ::=

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

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

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

  • SIMPLE
    Предусматривается стратегия простого резервирования, которая использует минимальное пространство под журналы.Пространство, отведенное под журналы, может быть автоматически многократно использовано, если оно больше не требуется для восстановления сбоев сервера.Дополнительные сведения см. в разделе Модели восстановления (SQL Server).

    Важно!

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

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

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

  • TORN_PAGE_DETECTION { ON | OFF }

    • ON
      Неполные страницы могут быть обнаружены компонентом Компонент Database Engine.

    • OFF
      Неполные страницы не могут быть обнаружены компонентом Компонент Database Engine.

    Важно!

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

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

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

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

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

      Примечание

      В более ранних версиях SQL Server параметр базы данных PAGE_VERIFY был равен NONE для базы данных tempdb и не мог изменяться.В SQL Server 2008 и более поздних версиях, значением по умолчанию для базы данных tempdb является CHECKSUM для новых установок SQL Server.После обновления установки SQL Server значением по умолчанию остается NONE.Этот параметр можно изменять.Для базы данных tempdb рекомендуется использовать значение CHECKSUM.

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

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

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

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

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

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

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

<target_recovery_time_option> ::=

Область применения: начиная с SQL Server 2012 до SQL Server 2014.

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

  • TARGET_RECOVERY_TIME **=**target_recovery_time { SECONDS | MINUTES }

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

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

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

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

<service_broker_option> ::=

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

  • ENABLE_BROKER
    Определяет, что для указанной базы данных включен компонент Компонент Service Broker.Запускается доставка сообщений, а флаг is_broker_enabled в представлении каталога sys.databases устанавливается в значение true.В базе данных сохраняется существующий идентификатор компонента Компонент 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 в представлении каталога sys.databases устанавливается в значение false.В базе данных сохраняется существующий идентификатор компонента Компонент Service Broker.

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

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

  • HONOR_BROKER_PRIORITY {ON | OFF}

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

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

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

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

<snapshot_option> ::=

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

  • ALLOW_SNAPSHOT_ISOLATION { ON | OFF }

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

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

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

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

    При установке параметра ALLOW_SNAPSHOT_ISOLATION в базе данных, находящейся в режиме READ_ONLY, установка будет сохранена при переводе базы данных в режим READ_WRITE.

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

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

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

  • READ_COMMITTED_SNAPSHOT { ON | OFF }

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

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

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

    При установке параметра READ_COMMITTED_SNAPSHOT в базе данных, которая находится в режиме READ_ONLY, это состояние будет сохранено при переводе базы данных в режим READ_WRITE.

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

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

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

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

  • MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT { ON | OFF }

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

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

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

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

Значение этого параметра по умолчанию — OFF.

Текущее состояние этого параметра можно определить по столбцу is_memory_optimized_elevate_to_snapshot_on в представлении каталога sys.databases (Transact-SQL).

<sql_option> ::=

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

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

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

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

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

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

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

  • ANSI_NULLS { ON | OFF }

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

    • OFF
      Результатом сравнения значений не в Юникоде будет TRUE, если оба значения — NULL.

    Важно!

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

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

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

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

  • ANSI_PADDING { ON | OFF }

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

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

    • OFF
      Конечные пробелы для varchar или nvarchar и нули для varbinary будут отброшены.

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

    Важно!

    В будущей версии SQL Server параметр ANSI_PADDING всегда будет иметь значение ON, а все приложения, явно присваивающие ему значение 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 при подключении к экземпляру SQL Server устанавливают параметр ANSI_PADDING инструкции SET на уровне соединения с состоянием ON для сеанса.Дополнительные сведения см. в разделе SET ANSI_PADDING (Transact-SQL).

    Важно!

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

  • ANSI_WARNINGS { ON | OFF }

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

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

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

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

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

  • ARITHABORT { ON | OFF }

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

    • OFF
      При возникновении одной из этих ошибок будет выдано предупреждающее сообщение, однако запрос, пакет или транзакция продолжит работу, как будто никакой ошибки не произошло.

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

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

  • COMPATIBILITY_LEVEL { 90 | 100 | 110 | 120}
    Дополнительные сведения см. в разделе Уровень совместимости инструкции ALTER DATABASE (Transact-SQL).

  • CONCAT_NULL_YIELDS_NULL { ON | OFF }

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

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

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

    Важно!

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

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

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

  • QUOTED_IDENTIFIER { ON | OFF }

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

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

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

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

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

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

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

  • NUMERIC_ROUNDABORT { ON | OFF }

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

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

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

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

  • RECURSIVE_TRIGGERS { ON | OFF }

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

    • OFF
      Не разрешено только прямое рекурсивное срабатывание триггеров AFTER.Чтобы отключить косвенную рекурсию триггеров AFTER, присвойте с помощью процедуры sp_configure параметру сервера «nested triggers» значение 0.

    Примечание

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

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

WITH <termination> ::=

Указывает, когда откатывать незавершенные транзакции при переходе базы данных из одного состояния в другое.Если предложение завершения опущено, инструкция 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>

Нет

Да

<database_mirroring_option>

Нет

Нет

ALLOW_SNAPSHOT_ISOLATION

Нет

Нет

READ_COMMITTED_SNAPSHOT

Нет

Да

MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT

Да

Да

<service_broker_option>

Да

Нет

DATE_CORRELATION_OPTIMIZATION

Да

Да

<parameterization_option>

Да

Да

<change_tracking_option>

Да

Да

<db_encryption>

Да

Нет

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

OFFLINE

READ_WRITE

ONLINE

MODIFY FILEGROUP DEFAULT

MODIFY_NAME

MODIFY FILEGROUP READ_WRITE

COLLATE

MODIFY FILEGROUP READ_ONLY

READ_ONLY

 

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

  • В базе данных включен параметр базы данных AUTO_CLOSE.Если отсутствуют ссылки соединений пользователя или базы данных, фоновая задача предпримет попытку закрыть и отключить базу данных автоматически.

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

  • Моментальный снимок базы данных для базы данных-источника удален.

  • Успешное перестроение журнала транзакций базы данных.

  • Восстановление резервной копии базы данных.

  • Отсоединение базы данных.

Очистка кэша планов становится причиной перекомпиляции всех последующих планов выполнения и приводит к непредвиденному временному снижению производительности обработки запросов.Для каждого удаленного хранилища кэша в кэше планов журнал ошибок SQL Server содержит следующее информационное сообщение: «SQL Server обнаружил %d экземпляров, записанных на диск хранилищ кэша для хранилища кэша "%s" (части кэша планов) в результате операций по обслуживанию или изменению конфигурации базы данных».Это сообщение добавляется в журнал каждые пять минут при сбросе кэша в течение этого интервала времени. 

Примеры

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

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

USE master;
GO
ALTER DATABASE AdventureWorks2012
SET RECOVERY FULL< PAGE_VERIFY CHECKSUM;
GO

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

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

Примечание

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

USE master;
GO
ALTER DATABASE AdventureWorks2012
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE AdventureWorks2012
SET READ_ONLY
GO
ALTER DATABASE AdventureWorks2012
SET MULTI_USER;
GO

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

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

USE AdventureWorks2012;
USE master;
GO
ALTER DATABASE AdventureWorks2012
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'AdventureWorks2012';
GO

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

name                 snapshot_isolation_state  description

-------------------- ------------------------  ----------

AdventureWorks2012   1                         ON

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

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

ALTER DATABASE AdventureWorks2012
SET CHANGE_TRACKING = ON
(AUTO_CLEANUP = ON, CHANGE_RETENTION = 2 DAYS);

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

ALTER DATABASE AdventureWorks2012
SET CHANGE_TRACKING (CHANGE_RETENTION = 3 DAYS);

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

ALTER DATABASE AdventureWorks2012
SET CHANGE_TRACKING = OFF;

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

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

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

ALTER DATABASE AdventureWorks2012
SET QUERY_STORE = ON 
    (
      OPERATION_MODE = READ_ONLY 
    , CLEANUP_POLICY = ( STALE_QUERY_THRESHOLD_DAYS = 5 )
    , DATA_FLUSH_INTERVAL_SECONDS = 2000 
    , MAX_SIZE_MB = 10 
    , INTERVAL_LENGTH_MINUTES = 10 
    );

См. также

Уровень совместимости инструкции ALTER DATABASE (Transact-SQL)
Зеркальное отображение базы данных ALTER DATABASE (Transact-SQL)
ALTER DATABASE SET HADR (Transact-SQL)
Статистика
CREATE DATABASE (SQL Server Transact-SQL)
Включение и отключение отслеживания изменений (SQL Server)
DATABASEPROPERTYEX (Transact-SQL)
DROP DATABASE (Transact-SQL)
SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
sp_configure (Transact-SQL)
sys.databases (Transact-SQL)
sys.data_spaces (Transact-SQL)