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

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

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

Синтаксис

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

<optionspec>::= 
{
    <auto_option> 
  | <change_tracking_option> 
  | <cursor_option> 
  | <database_mirroring_option>
  | <date_correlation_optimization_option>
  | <db_encryption_option>
  | <db_state_option>
  | <db_update_option> 
  | <db_user_access_option>
  | <external_access_option>
  | <parameterization_option>
  | <recovery_option> 
  | <service_broker_option>
  | <snapshot_option>
  | <sql_option> 
}

<auto_option> ::= 
{
    AUTO_CLOSE { ON | OFF } 
  | AUTO_CREATE_STATISTICS { 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> ::=
{
    AUTO_CLEANUP = { ON | OFF } 
  | CHANGE_RETENTION = retention_period { DAYS | HOURS | MINUTES }
}

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

<external_access_option> ::=
{
    DB_CHAINING { ON | OFF }
  | TRUSTWORTHY { ON | OFF }
}
<parameterization_option> ::=
{
    PARAMETERIZATION { SIMPLE | FORCED }
}

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

<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 }
}
<sql_option> ::= 
{
    ANSI_NULL_DEFAULT { ON | OFF } 
  | ANSI_NULLS { ON | OFF } 
  | ANSI_PADDING { ON | OFF } 
  | ANSI_WARNINGS { ON | OFF } 
  | ARITHABORT { ON | OFF } 
  | COMPATIBILITY_LEVEL = { 80 | 90 | 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
}

Аргументы

<auto_option>::=

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

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

  • AUTO_CLOSE { ON | OFF }

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

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

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

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

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

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

  • AUTO_CREATE_STATISTICS { ON | OFF }

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

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

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

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

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

  • AUTO_SHRINK { ON | OFF }

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

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

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

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

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

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

  • 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 { DAYS | HOURS | MINUTES }
    Указывает минимальный срок хранения данных отслеживания изменений в базе данных. Данные удаляются, только если для параметра AUTO_CLEANUP установлено значение ON.

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

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

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

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

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

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

<db_encryption_option>::=

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

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

<db_update_option>::=

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

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

  • 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.

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

<parameterization_option> ::=

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

  • PARAMETERIZATION { SIMPLE | FORCED }

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

<recovery_option> ::=

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

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

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

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

    Важное примечаниеВажно!

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

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

Состояние этого параметра можно определить по столбцам 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.

    • В SQL Server 2005 и SQL Server 2008 значением по умолчанию является CHECKSUM. В SQL Server 2000 значением по умолчанию является TORN_PAGE_DETECTION.

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

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

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

    • Значение 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.

<service_broker_option>::=

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

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

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

    Текущую установку этого параметра можно определить по столбцу 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.

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

    Столбцы с типами данных 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).

    Важное примечаниеВажно!

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

    Состояние этого параметра можно определить по столбцу 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 { 80 | 90 | 100 }
    Дополнительные сведения см. в разделе Уровень совместимости инструкции 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). Дополнительные сведения см. в разделе Идентификаторы с разделителями (компонент Database Engine).

    После создания таблицы параметр 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>

Да

Да

<external_access_option>

Да

Нет

<cursor_option>

Да

Нет

<auto_option>

Да

Нет

<sql_option>

Да

Нет

<recovery_option>

Да

Нет

<database_mirroring_option>

Нет

Нет

ALLOW_SNAPSHOT_ISOLATION

Нет

Нет

READ_COMMITTED_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

 

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

Примеры

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

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

USE master;
GO
ALTER DATABASE AdventureWorks2008R2 
SET RECOVERY FULL, PAGE_VERIFY CHECKSUM;
GO

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

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

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

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

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

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

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

USE AdventureWorks2008R2;
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'AdventureWorks2008R2';
GO
USE master;
GO
ALTER DATABASE AdventureWorks2008R2
    SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- Check again.
SELECT name, snapshot_isolation_state,
     snapshot_isolation_state_desc AS description
FROM sys.databases
WHERE name = N'AdventureWorks2008R2';
GO

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

name            snapshot_isolation_state  description

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

AdventureWorks2008R2  1                         ON

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

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

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

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

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

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

ALTER DATABASE AdventureWorks2008R2
SET CHANGE_TRACKING = OFF;