Параметры 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 { 
        = ON [ <change_tracking_option_list > ] |
    <change_tracking_option_list> |
        = OFF
  }
}

<change_tracking_option_list> ::=
{

    ( <change_tracking_option> | <change_tracking_option_list> , 
    <change_tracking_option> )
}

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

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

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

<service_broker_option>::=

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

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

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

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

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

  • NEW_BROKER
    Указывает, что база данных должна получить новый идентификатор посредника. Поскольку база данных предполагает наличие нового компонента Service Broker, все существующие сеансы связи в базе данных будут немедленно удалены, не выдавая диалоговых сообщений о завершении. Все маршруты, ссылающиеся на старый идентификатор компонента 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. При изменении настройки модели эта настройка становится значением по умолчанию для любых вновь создаваемых баз данных, за исключением tempdb.

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

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

  • READ_COMMITTED_SNAPSHOT { ON | OFF }

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

    • OFF
      Отключает возможность делать моментальные снимки фиксируемого считывания базы данных на уровне базы данных. Транзакции с уровнем изоляции 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, для столбцов типа данных alias или пользовательского типа 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" (части кэша планов) в результате операций по обслуживанию или изменению настройки базы данных». Это сообщение протоколируется каждые пять минут при записи кэша в течение этого временного интервала. 

Примеры

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

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

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

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

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

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

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

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

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

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

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

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

name            snapshot_isolation_state  description
--------------- ------------------------  -----------
AdventureWorks  1                         ON

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

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

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

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

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

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

ALTER DATABASE AdventureWorks
SET CHANGE_TRACKING = OFF;

Журнал изменений для документа

Обновления

Для повышения точности исправлены описания AUTO_CREATE_STATISTICS, AUTO_UPDATE_STATISTICS и AUTO_UPDATE_STATISTICS_ASYNC.