ALTER DATABASE (Transact-SQL) SET HADR

Применимо к:SQL Server

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

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

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

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

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

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

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

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

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

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

    Примечание.

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

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

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

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

Важно!

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

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 в контексте см. в статье Создание группы доступности Always On с помощью Transact-SQL (T-SQL).

См. также

ALTER DATABASE (Transact-SQL)
ALTER AVAILABILITY GROUP (Transact-SQL)
CREATE AVAILABILITY GROUP (Transact-SQL)
Что такое группа доступности Always On?Поиск и устранение неисправностей конфигурации групп доступности Always On (SQL Server)