ALTER DATABASE (Transact-SQL) SET HADRALTER DATABASE (Transact-SQL) SET HADR

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

В данном разделе приведен синтаксис инструкции ALTER DATABASE для настройки параметров Группы доступности AlwaysOnAlways On availability groups базы данных-получателя.This topic contains the ALTER DATABASE syntax for setting Группы доступности AlwaysOnAlways On availability groups options on a secondary database. В инструкции ALTER DATABASE допустим только один параметр SET HADR.Only one SET HADR option is permitted per ALTER DATABASE statement. Эти параметры поддерживаются только во вторичных репликах.These options are supported only on secondary replicas.

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

СинтаксисSyntax

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

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

АргументыArguments

database_namedatabase_name
Имя изменяемой базы данных-получателя.Is the name of the secondary database to be modified.

SET HADRSET HADR
Выполняет указанную команду Группы доступности AlwaysOnAlways On availability groups в указанной базе данных.Executes the specified Группы доступности AlwaysOnAlways On availability groups command on the specified database.

{ AVAILABILITY GROUP = group_name | OFF }{ AVAILABILITY GROUP =group_name | OFF }
Присоединяет базу данных доступности к указанной группе доступности или исключает ее из группы, как показано ниже.Joins or removes the availability database from the specified availability group, as follows:

group_namegroup_name
Присоединяет указанную базу данных на вторичной реплике, размещенной на экземпляре сервера, на котором выполнена команда, к группе доступности, задаваемой параметром group_name.Joins the specified database on the secondary replica that is hosted by the server instance on which you execute the command to the availability group specified by group_name.

Необходимые условия для выполнения этой операции следующие:The prerequisites for this operation are as follows:

  • База данных должна быть уже добавлена в группу доступности на основной реплике.The database must already have been added to the availability group on the primary replica.

  • Основная реплика должна быть активной.The primary replica must be active. Сведения о том, как разрешать проблемы в неактивной основной реплике, см. в разделе Разрешение проблем с конфигурацией групп доступности AlwaysOn (SQL Server).For information about how troubleshoot an inactive primary replica, see Troubleshooting Always On Availability Groups Configuration (SQL Server).

  • Основная реплика должна находиться в интерактивном режиме, а дополнительная реплика должна быть подключена к основной реплике.The primary replica must be online, and the secondary replica must be connected to the primary replica.

  • База данных-получатель должна быть восстановлена с применением параметра WITH NORECOVERY из недавней резервной копии баз данных и журнала основной базы данных, причем резервная копия журнала должна быть достаточно новой, чтобы позволять базе данных-получателю «догнать» основную базу данных.The secondary database must have been restored using WITH NORECOVERY from recent database and log backups of the primary database, ending with a log backup that is recent enough to permit the secondary database to catch up to the primary database.

    Примечание

    Чтобы добавить базу данных в группу доступности, подключитесь к экземпляру сервера, на котором размещена первичная реплика, и воспользуйтесь инструкцией ALTER AVAILABILITY GROUPgroup_name ADD DATABASE database_name.To add a database to the availability group, connect to the server instance that hosts the primary replica, and use the ALTER AVAILABILITY GROUPgroup_name ADD DATABASE database_name statement.

Дополнительные сведения см. в статье Присоединение базы данных-получателя к группе доступности (SQL Server).For more information, see Join a Secondary Database to an Availability Group (SQL Server).

OFFOFF
Удаляет указанную базу данных-получатель из группы доступности.Removes the specified secondary database from the availability group.

Удаление базы данных-получателя может быть полезным в случае, если ее состояние значительно отстает от состояния основной базы данных, и ожидать длительной синхронизации состояния нежелательно.Removing a secondary database can be useful if it has fallen far behind the primary database, and you do not want to wait for the secondary database to catch up. После удаления базы данных-получателя ее можно обновить, восстановив последовательность резервных копий, которая заканчивается недавней резервной копией журнала (с помощью инструкции RESTORE ... WITH NORECOVERY).After removing the secondary database, you can update it by restoring a sequence of backups ending with a recent log backup (using RESTORE ... WITH NORECOVERY).

Важно!

Чтобы полностью удалить базу данных доступности из группы доступности, подключитесь к экземпляру сервера, на котором размещена первичная реплика, и воспользуйтесь инструкцией ALTER AVAILABILITY GROUPgroup_name REMOVE DATABASE availability_database_name.To completely remove an availability database from an availability group, connect to the server instance that hosts the primary replica, and use the ALTER AVAILABILITY GROUPgroup_name REMOVE DATABASE availability_database_name statement. Дополнительные сведения см. в разделе Удаление базы данных-источника из группы доступности (SQL Server).For more information, see Remove a Primary Database from an Availability Group (SQL Server).

SUSPENDSUSPEND
Приостанавливает перемещение данных в базу данных-получатель.Suspends data movement on a secondary database. Команда SUSPEND возвращается сразу после принятия репликой, в которой размещена целевая база данных, но фактическая приостановка базы данных происходит асинхронно.A SUSPEND command returns as soon as it has been accepted by the replica that hosts the target database, but actually suspending the database occurs asynchronously.

Область воздействия зависит от того, где выполняется инструкция ALTER DATABASE:The scope of the impact depends on where you execute the ALTER DATABASE statement:

  • Если приостанавливается база данных-получатель во вторичной реплике, то будет приостановлена только локальная база данных-получатель.If you suspend a secondary database on a secondary replica, only the local secondary database is suspended. Существующие соединения в предназначенной для чтения вторичной реплике остаются применимыми.Existing connections on the readable secondary remain usable. Новые соединения с приостановленной базой данных в предназначенной только для чтения вторичной реплике не допускаются, пока движение данных не будет возобновлено.New connections to the suspended database on the readable secondary are not allowed until data movement is resumed.

  • Если приостанавливается база данных в первичной реплике, то будет приостановлена передача данных в соответствующие базы данных-получатели каждой из вторичных реплик.If you suspend a database on the primary replica, data movement is suspended to the corresponding secondary databases on every secondary replica. Существующие соединения во вторичной реплике для чтения остаются применимыми, и со вторичными репликами для чтения не будут устанавливаться новые соединения.Existing connections on a readable secondary remain usable, and new read-intent connections will not connect to readable secondary replicas.

  • Если движение данных приостановлено из-за принудительного перехода на другой ресурс вручную, то соединения с новой вторичной репликой не допускаются до тех пор, пока движение данных остается приостановленным.When data movement is suspended due to a forced manual failover, connections to the new secondary replica are not allowed while data movement is suspended.

Если приостанавливается база данных во вторичной реплике, и база данных, и реплика становятся несинхронизированными и отмечаются как NOT SYNCHRONIZED.When a database on a secondary replica is suspended, both the database and replica become unsynchronized and are marked as NOT SYNCHRONIZED.

Важно!

Пока база данных-получатель остается приостановленной, в очереди отправки соответствующей основной базы данных накапливаются неотправленные записи журнала транзакций.While a secondary database is suspended, the send queue of the corresponding primary database will accumulate unsent transaction log records. Соединения с вторичной репликой возвращают данные, которые были доступными ко времени приостановки движения данных.Connections to the secondary replica return data that was available at the time the data movement was suspended.

Примечание

Приостановка и возобновление базы данных-получателя AlwaysOn напрямую не влияют на доступность базы данных-источника, хотя приостановка базы данных-получателя может повлиять на функции избыточности и отработки отказа для базы данных-источника, пока работа приостановленной базы данных-получателя не будет возобновлена.Suspending and resuming an Always On secondary database does not directly affect the availability of the primary database, though suspending a secondary database can impact redundancy and failover capabilities for the primary database, until the suspended secondary database is resumed. Этим она отличается от зеркального отображения базы данных, где состояние зеркального отображения приостанавливается как в зеркальной базе данных, так и в основной базе данных, до тех пор пока не возобновится зеркальное отображение.This is in contrast to database mirroring, where the mirroring state is suspended on both the mirror database and the principal database until mirroring is resumed. Приостановка базы данных-источника AlwaysOn приостанавливает перемещение данных для всех соответствующих баз данных-получателей, а функции избыточности и отработки отказа для этой базы данных не работают до тех пор, пока работа базы данных-источника не будет возобновлена.Suspending an Always On primary database suspends data movement on all the corresponding secondary databases, and redundancy and failover capabilities cease for that database until the primary database is resumed.

Дополнительные сведения см. ниже в разделе Приостановка базы данных доступности (SQL Server).For more information, see Suspend an Availability Database (SQL Server).

RESUMERESUME
Возобновляет приостановленную передачу данных в указанную базу данных-получатель.Resumes suspended data movement on the specified secondary database. Команда RESUME возвращается сразу после принятия репликой, в которой размещена целевая база данных, но фактическое возобновление базы данных происходит асинхронно.A RESUME command returns as soon as it has been accepted by the replica that hosts the target database, but actually resuming the database occurs asynchronously.

Область воздействия зависит от того, где выполняется инструкция ALTER DATABASE:The scope of the impact depends on where you execute the ALTER DATABASE statement:

  • Если возобновляется база данных-получатель во вторичной реплике, то будет возобновлена только локальная база данных-получатель.If you resume a secondary database on a secondary replica, only the local secondary database is resumed. Перемещение данных возобновляется, если база данных не была также приостановлена в основной реплике.Data movement is resumed unless the database has also been suspended on the primary replica.

  • Если восстанавливается база данных в первичной реплике, то будет восстановлена передача данных во все вторичные реплики, в которых соответствующие базы данных-получатели не были также приостановлены локально.If you resume a database on the primary replica, data movement is resumed to every secondary replica on which the corresponding secondary database has not also been suspended locally. Чтобы возобновить базу данных-получатель, которая была по отдельности приостановлена во вторичной реплике, подключитесь к экземпляру сервера, на котором размещена вторичная реплика, и возобновите базу данных в этом сеансе.To resume a secondary database that was individually suspended on a secondary replica, connect to the server instance that hosts the secondary replica and resume the database there.

    В режиме синхронной фиксации состояние базы данных меняется на SYNCHRONIZING.Under synchronous-commit mode, the database state changes to SYNCHRONIZING. Если в данный момент ни одна другая база данных не приостановлена, состояние реплики также меняется на SYNCHRONIZING.If no other database is currently suspended, the replica state also changes to SYNCHRONIZING.

    Дополнительные сведения см. ниже в разделе Возобновление базы данных доступности (SQL Server).For more information, see Resume an Availability Database (SQL Server).

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

При присоединении базы данных-получателя к группе доступности локальная вторичная реплика изменяет состояние этой базы данных-получателя с RESTORING на ONLINE.When a secondary database is joined to an availability group, the local secondary replica changes the state of that secondary database from RESTORING to ONLINE. Если база данных-получатель удаляется из группы доступности, локальная вторичная реплика возвращает базу данных в состояние RESTORING.If a secondary database is removed from the availability group, it is set back to the RESTORING state by the local secondary replica. Это позволяет применять к такой базе данных-получателю последовательные резервные копии журналов из основной базы данных.This allows you to apply subsequent log backups from the primary database to that secondary database.

ОграниченияRestrictions

Выполнение инструкций ALTER DATABASE вне транзакций и пакетов.Execute ALTER DATABASE statements outside of both transactions and batches.

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

РазрешенияPermissions

Необходимо разрешение ALTER на базу данных.Requires ALTER permission on the database. Для присоединения базы данных к группе доступности требуется членство в предопределенной роли базы данных db_owner.Joining a database to an availability group requires membership in the db_owner fixed database role.

ПримерыExamples

В следующем примере база данных-получатель AccountsDb1 включается в локальную вторичную реплику группы доступности AccountsAG.The following example joins the secondary database, AccountsDb1, to the local secondary replica of the AccountsAG availability group.

ALTER DATABASE AccountsDb1 SET HADR AVAILABILITY GROUP = AccountsAG;  

Примечание

Пример использования инструкции Transact-SQLTransact-SQL в контексте см. в статье Создание группы доступности (Transact-SQL).To see this Transact-SQLTransact-SQL statement used in context, see Create an Availability Group (Transact-SQL).

См. также:See Also

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