ALTER DATABASE (Transact-SQL) SET HADR

Применимо к: даSQL Server (все поддерживаемые версии)

В данном разделе приведен синтаксис инструкции ALTER DATABASE для настройки параметров Группы доступности AlwaysOn базы данных-получателя. В инструкции ALTER DATABASE допустим только один параметр SET HADR. Эти параметры поддерживаются только во вторичных репликах.

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

Синтаксис

ALTER DATABASE database_name  
   SET HADR   
   {  
        { AVAILABILITY GROUP = group_name | OFF }  
   | { SUSPEND | RESUME }  
   }  
[;]  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

database_name
Имя изменяемой базы данных-получателя.

SET HADR
Выполняет указанную команду Группы доступности AlwaysOn в указанной базе данных.

{ AVAILABILITY GROUP = group_name | OFF }
Присоединяет базу данных доступности к указанной группе доступности или исключает ее из группы, как показано ниже.

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

Необходимые условия для выполнения этой операции следующие:

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

  • Основная реплика должна быть активной. Сведения о том, как разрешать проблемы в неактивной основной реплике, см. в разделе Разрешение проблем с конфигурацией групп доступности AlwaysOn (SQL Server).

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

  • База данных-получатель должна быть восстановлена с применением параметра WITH NORECOVERY из недавней резервной копии баз данных и журнала основной базы данных, причем резервная копия журнала должна быть достаточно новой, чтобы позволять базе данных-получателю «догнать» основную базу данных.

    Примечание

    Чтобы добавить базу данных в группу доступности, подключитесь к экземпляру сервера, на котором размещена первичная реплика, и воспользуйтесь инструкцией ALTER AVAILABILITY GROUPgroup_name ADD DATABASE database_name.

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

OFF
Удаляет указанную базу данных-получатель из группы доступности.

Удаление базы данных-получателя может быть полезным в случае, если ее состояние значительно отстает от состояния основной базы данных, и ожидать длительной синхронизации состояния нежелательно. После удаления базы данных-получателя ее можно обновить, восстановив последовательность резервных копий, которая заканчивается недавней резервной копией журнала (с помощью инструкции RESTORE ... WITH NORECOVERY).

Важно!

Чтобы полностью удалить базу данных доступности из группы доступности, подключитесь к экземпляру сервера, на котором размещена первичная реплика, и воспользуйтесь инструкцией ALTER AVAILABILITY GROUPgroup_name REMOVE DATABASE availability_database_name. Дополнительные сведения см. в разделе Удаление базы данных-источника из группы доступности (SQL Server).

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

Область воздействия зависит от того, где выполняется инструкция ALTER DATABASE:

  • Если приостанавливается база данных-получатель во вторичной реплике, то будет приостановлена только локальная база данных-получатель. Существующие соединения в предназначенной для чтения вторичной реплике остаются применимыми. Новые соединения с приостановленной базой данных в предназначенной только для чтения вторичной реплике не допускаются, пока движение данных не будет возобновлено.

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

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

Если приостанавливается база данных во вторичной реплике, и база данных, и реплика становятся несинхронизированными и отмечаются как NOT SYNCHRONIZED.

Важно!

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

Примечание

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

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

RESUME
Возобновляет приостановленную передачу данных в указанную базу данных-получатель. Команда RESUME возвращается сразу после принятия репликой, в которой размещена целевая база данных, но фактическое возобновление базы данных происходит асинхронно.

Область воздействия зависит от того, где выполняется инструкция ALTER DATABASE:

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

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

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

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

Состояния базы данных

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

Ограничения

Выполнение инструкций ALTER DATABASE вне транзакций и пакетов.

Безопасность

Разрешения

Необходимо разрешение ALTER на базу данных. Для присоединения базы данных к группе доступности требуется членство в предопределенной роли базы данных db_owner.

Примеры

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

ALTER DATABASE AccountsDb1 SET HADR AVAILABILITY GROUP = AccountsAG;  

Примечание

Пример использования инструкции Transact-SQL в контексте см. в статье Создание группы доступности (Transact-SQL).

См. также:

ALTER DATABASE (Transact-SQL)
ALTER AVAILABILITY GROUP (Transact-SQL)
CREATE AVAILABILITY GROUP (Transact-SQL)
Обзор групп доступности AlwaysOn (SQL Server) Поиск и устранение неисправностей групп доступности AlwaysOn (SQL Server)