ALTER DATABASE SET HADR (Transact-SQL)
В этом разделе описывается синтаксис инструкции ALTER DATABASE для установки параметров Группы доступности AlwaysOn в базе данных-получателе. В инструкции ALTER DATABASE допускается только один параметр SET HADR. Эти параметры поддерживаются только во вторичных репликах.
Синтаксические обозначения в 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 AVAILABILITY GROUP (Transact-SQL)
CREATE AVAILABILITY GROUP (Transact-SQL)
Основные понятия
Обзор групп доступности AlwaysOn (SQL Server)
Поиск и устранение неисправностей конфигурации групп доступности AlwaysOn (SQL Server)