ALTER DATABASE SET HADR (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2012 до текущей версии).

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

Синтаксис

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

Аргументы

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

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

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

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

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

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

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

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

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

        Примечание

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

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

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

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

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

      Чтобы полностью удалить базу данных доступности из группы доступности, подключитесь к экземпляру сервера, на котором размещена первичная реплика, и воспользуйтесь инструкцией ALTER AVAILABILITY GROUP group_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)