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 }
}
[;]
Аргументы
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)