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

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Este tópico contém a sintaxe de ALTER DATABASE para configurar as opções de Grupos de disponibilidade AlwaysOnAlways On availability groups em um banco de dados secundário.This topic contains the ALTER DATABASE syntax for setting Grupos de disponibilidade AlwaysOnAlways On availability groups options on a secondary database. Somente uma opção SET HADR é permitida por instrução ALTER DATABASE.Only one SET HADR option is permitted per ALTER DATABASE statement. Há suporte para essas opções somente em réplicas secundárias.These options are supported only on secondary replicas.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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

ArgumentosArguments

database_namedatabase_name
É o nome do banco de dados secundário a ser modificado.Is the name of the secondary database to be modified.

SET HADRSET HADR
Executa o comando Grupos de disponibilidade AlwaysOnAlways On availability groups especificado no banco de dados especificado.Executes the specified Grupos de disponibilidade AlwaysOnAlways On availability groups command on the specified database.

{ AVAILABILITY GROUP = group_name | OFF }{ AVAILABILITY GROUP =group_name | OFF }
Une ou remove o banco de dados de disponibilidade no grupo de disponibilidade especificado, da seguinte forma:Joins or removes the availability database from the specified availability group, as follows:

group_namegroup_name
Une o banco de dados especificado na réplica secundária que é hospedada pela instância de servidor na qual você executa o comando para o grupo de disponibilidade especificado por 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.

Os pré-requisitos para essa operação são:The prerequisites for this operation are as follows:

  • O banco de dados já deve ter sido adicionado ao grupo de disponibilidade na réplica primária.The database must already have been added to the availability group on the primary replica.

  • A réplica primária deve estar ativa.The primary replica must be active. Para obter informações de como solucionar problemas de uma réplica primária inativa, confira Solucionar problemas de configuração de Grupos de Disponibilidade AlwaysOn (SQL Server).For information about how troubleshoot an inactive primary replica, see Troubleshooting Always On Availability Groups Configuration (SQL Server).

  • A réplica primária deve estar online, e a réplica secundária deve estar conectada à réplica primária.The primary replica must be online, and the secondary replica must be connected to the primary replica.

  • O banco de dados secundário deve ter sido restaurado usando WITH NORECOVERY de backups de banco de dados e de log recentes do banco de dados primário, terminando com um backup de log recente o suficiente para permitir que o banco de dados secundário fique equiparado ao banco de dados primário.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.

    Observação

    Para adicionar um banco de dados no grupo de disponibilidade, conecte-se à instância do servidor que hospeda a réplica primária e use a instrução 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.

Para obter mais informações, consulte Unir um banco de dados secundário a um grupo de disponibilidade (SQL Server).For more information, see Join a Secondary Database to an Availability Group (SQL Server).

OFFOFF
Remove o banco de dados secundário especificado do grupo de disponibilidade.Removes the specified secondary database from the availability group.

Remover um banco de dados secundário pode ser útil caso ele fique muito atrás do banco de dados primário e você não deseje esperar pelo banco de dados secundário ficar em dia.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. Depois de remover o banco de dados secundário, você pode atualizá-lo restaurando uma sequência de backups que terminam com um backup de log recente (usando 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).

Importante

Para remover completamente um banco de dados de disponibilidade de um grupo de disponibilidade, conecte-se à instância do servidor que hospeda a réplica primária e use a instrução 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. Para obter mais informações, confira Remover um banco de dados primário de um grupo de disponibilidade (SQL Server).For more information, see Remove a Primary Database from an Availability Group (SQL Server).

SUSPENDSUSPEND
Suspende a movimentação de dados em um banco de dados secundário.Suspends data movement on a secondary database. O comando SUSPEND retorna assim que é aceito pela réplica que hospeda o banco de dados de destino, mas, na verdade, a suspensão do banco de dados ocorre de forma assíncrona.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.

O escopo do impacto depende de onde você executa a instrução ALTER DATABASE:The scope of the impact depends on where you execute the ALTER DATABASE statement:

  • Se você suspender um banco de dados secundário em uma réplica secundária, somente o banco de dados secundário local será suspenso.If you suspend a secondary database on a secondary replica, only the local secondary database is suspended. Conexões existentes nas secundários legíveis permanecem utilizáveis.Existing connections on the readable secondary remain usable. Novas conexões para o banco de dados suspenso na secundário legível não serão permitidas até que o movimento de dados seja continuado.New connections to the suspended database on the readable secondary are not allowed until data movement is resumed.

  • Se você suspender um banco de dados na réplica primária, a movimentação de dados será suspenso para os bancos de dados secundários correspondentes em cada réplica secundária.If you suspend a database on the primary replica, data movement is suspended to the corresponding secondary databases on every secondary replica. As conexões existentes em um secundário legível permanecem utilizáveis, e novas conexões de tentativa de leitura não se conectarão às réplicas secundárias legíveis.Existing connections on a readable secondary remain usable, and new read-intent connections will not connect to readable secondary replicas.

  • Quando o movimento de dados é suspenso devido a um failover manual forçado, as conexões com a nova réplica secundária não são permitidas enquanto o movimento de dados estiver suspenso.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.

Quando um banco de dados em uma réplica secundária é suspenso, o banco de dados e a réplica se tornam não sincronizado e são marcados como NOT SYNCHRONIZED.When a database on a secondary replica is suspended, both the database and replica become unsynchronized and are marked as NOT SYNCHRONIZED.

Importante

Enquanto um banco de dados secundário permanece suspenso, a fila de envio do banco de dados primário correspondente acumula registros de log de transação não enviados.While a secondary database is suspended, the send queue of the corresponding primary database will accumulate unsent transaction log records. As conexões para a réplica secundária retornam dados que estavam disponíveis no momento em que o movimento de dados foi suspenso.Connections to the secondary replica return data that was available at the time the data movement was suspended.

Observação

Suspender e retomar um banco de dados secundário Always On não afeta diretamente a disponibilidade do banco de dados primário, entretanto, suspender um banco de dados secundário pode afetar os recursos de redundância e de failover do banco de dados primário, até que o banco de dados secundário suspenso seja retomado.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. Isto está em contraste com o espelhamento de banco de dados, onde o estado de espelhamento é suspenso no banco de dados espelho e no banco de dados principal até que o espelhamento seja retomado.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. Suspender um banco de dados secundário AlwaysOn suspende o movimento de dados em todos os bancos de dados secundários correspondentes, e os recursos de failover e a redundância são eliminados para esse banco de dados até que o banco de dados primário seja retomado.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.

Para obter mais informações, confira Suspender um banco de dados de disponibilidade (SQL Server).For more information, see Suspend an Availability Database (SQL Server).

RESUMERESUME
Retoma a movimentação de dados suspensa no banco de dados secundário especificado.Resumes suspended data movement on the specified secondary database. O comando RESUME retorna assim que é aceito pela réplica que hospeda o banco de dados de destino, mas, na verdade, a retomada do banco de dados ocorre de forma assíncrona.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.

O escopo do impacto depende de onde você executa a instrução ALTER DATABASE:The scope of the impact depends on where you execute the ALTER DATABASE statement:

  • Se você retomar um banco de dados secundário em uma réplica secundária, somente o banco de dados secundário local será retomado.If you resume a secondary database on a secondary replica, only the local secondary database is resumed. A movimentação de dados é retomada a menos que o banco de dados também seja suspenso na réplica primária.Data movement is resumed unless the database has also been suspended on the primary replica.

  • Se você retomar um banco de dados na réplica primária, a movimentação de dados será retomado para cada réplica secundária em que o banco de dados secundário correspondente não tenha sido suspenso localmente.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. Para retomar um banco de dados secundário que foi suspenso individualmente em uma réplica secundária, conecte à instância de servidor que hospeda réplica secundária e retome o banco de dados.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.

    No modo da confirmação síncrona, o banco de dados muda para SYNCHRONIZING.Under synchronous-commit mode, the database state changes to SYNCHRONIZING. Se nenhum outro banco de dados estiver suspenso atualmente, o estado da réplica também mudará para SYNCHRONIZING.If no other database is currently suspended, the replica state also changes to SYNCHRONIZING.

    Para obter mais informações, consulte Retomar um banco de dados de disponibilidade (SQL Server).For more information, see Resume an Availability Database (SQL Server).

Estados de banco de dadosDatabase States

Quando um banco de dados secundário é unido a um grupo de disponibilidade, a réplica secundária local altera o estado desse banco de dados secundário de RESTAURAR para 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. Se um banco de dados secundário for removido do grupo de disponibilidade, ele retornará ao estado RESTORING pela réplica secundária local.If a secondary database is removed from the availability group, it is set back to the RESTORING state by the local secondary replica. Isso permite aplicar backups de log subsequentes do banco de dados primário a esse banco de dados secundário.This allows you to apply subsequent log backups from the primary database to that secondary database.

RestrictionsRestrictions

Execute instruções ALTER DATABASE fora de transações e lotes.Execute ALTER DATABASE statements outside of both transactions and batches.

SegurançaSecurity

PermissõesPermissions

Requer a permissão ALTER no banco de dados.Requires ALTER permission on the database. Unir um banco de dados a um grupo de disponibilidade requer a associação à função de banco de dados fixa db_owner.Joining a database to an availability group requires membership in the db_owner fixed database role.

ExemplosExamples

O exemplo a seguir une o banco de dados secundário AccountsDb1 à réplica secundária local do grupo de disponibilidade 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;  

Observação

Para ver esta instrução Transact-SQLTransact-SQL usada no contexto, veja Criar um grupo de disponibilidade (Transact-SQL).To see this Transact-SQLTransact-SQL statement used in context, see Create an Availability Group (Transact-SQL).

Consulte TambémSee 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)
Visão geral dos Grupos de Disponibilidade AlwaysOn (SQL Server) Solução de problemas de configuração de Grupos de Disponibilidade AlwaysOn (SQL Server)Overview of AlwaysOn Availability Groups (SQL Server) Troubleshoot AlwaysOn Availability Groups Configuration (SQL Server)