ALTER DATABASE SET HADR (Transact-SQL)
Este tópico contém a sintaxe de ALTER DATABASE para definir opções Grupos de Disponibilidade AlwaysOn em um banco de dados secundário. Somente uma opção SET HADR é permitida por instrução ALTER DATABASE. Há suporte para essas opções somente em réplicas secundárias.
Convenções de sintaxe Transact-SQL
Sintaxe
ALTER DATABASE database_name
SET HADR
{
{ AVAILABILITY GROUP = group_name | OFF }
| { SUSPEND | RESUME }
}
;
Argumentos
database_name
É o nome do banco de dados secundário a ser modificado.SET HADR
Executa o comando Grupos de Disponibilidade AlwaysOn especificado no banco de dados especificado.{ AVAILABILITY GROUP **=**group_name | OFF }
Une ou remove o banco de dados de disponibilidade no grupo de disponibilidade especificado, da seguinte forma:group_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.Os pré-requisitos para essa operação são:
O banco de dados já deve ter sido adicionado ao grupo de disponibilidade na réplica primária.
A réplica primária deve estar ativa. Para obter informações sobre como solucionar problemas de uma réplica primária inativa, consulte Solução de problemas de configuração de grupos de disponibilidade AlwaysOn (SQL Server).
A réplica primária deve estar online, e a réplica secundária deve estar conectada à réplica primária.
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.
Observação Para adicionar um banco de dados ao grupo de disponibilidade, conecte à instância de servidor que hospeda a réplica primária e use a instrução ALTER AVAILABILITY GROUP group_name ADD DATABASE database_name.
Para obter mais informações, consulte Unir um banco de dados secundário a um grupo de disponibilidade (SQL Server).
OFF
Remove o banco de dados secundário especificado do grupo de disponibilidade.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. Depois de remover o banco de dados secundário, você pode atualizá-lo restaurando uma sequência de backups que terminem com um backup de log recente (usando RESTORE... WITH NORECOVERY).
Importante Para remover completamente um banco de dados de disponibilidade de um grupo de disponibilidade, conecte à instância de servidor que hospeda a réplica primária e use a instrução ALTER AVAILABILITY GROUP group_name REMOVE DATABASE availability_database_name. Para obter mais informações, consulte Remover um banco de dados primário de um grupo de disponibilidade (SQL Server).
SUSPEND
Suspende a movimentação de dados em um banco de dados secundário. 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.O escopo do impacto depende de onde você executa a instrução ALTER DATABASE:
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. Conexões existentes nas secundários legíveis permanecem utilizáveis. 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.
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. Conexões existentes em uma secundária legível permanecem utilizáveis e novas conexões podem ser feitas.
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.
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.
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. 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.
Observação Suspender e retomar um banco de dados secundário AlwaysOn não afeta diretamente a disponibilidade do banco de dados primário, embora suspender um banco de dados secundário possa afetar a redundância e os recursos de failover para o banco de dados primário, até que o banco de dados secundário suspenso seja retomado. 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. 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.
Para obter mais informações, consulte Suspender um banco de dados de disponibilidade (SQL Server).
RESUME
Retoma a movimentação de dados suspensa no banco de dados secundário especificado. 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.O escopo do impacto depende de onde você executa a instrução ALTER DATABASE:
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. A movimentação de dados é retomada a menos que o banco de dados também seja suspenso na réplica primária.
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. 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.
No modo da confirmação síncrona, o banco de dados muda para SYNCHRONIZING. Se nenhum outro banco de dados estiver suspenso atualmente, o estado da réplica também mudará para SYNCHRONIZING.
Para obter mais informações, consulte Retomar um banco de dados de disponibilidade (SQL Server).
Estados de banco de dados
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. Se um banco de dados secundário for removido do grupo de disponibilidade, ele retornará ao estado RESTORING pela réplica secundária local. Isso permite aplicar backups de log subsequentes do banco de dados primário a esse banco de dados secundário.
Restrições
Execute instruções ALTER DATABASE fora de transações e lotes.
Segurança
Permissões
Requer a permissão ALTER no banco de dados. Unir um banco de dados a um grupo de disponibilidade requer associação na função de banco de dados fixa db_owner.
Exemplos
O exemplo a seguir une o banco de dados secundário AccountsDb1 à réplica secundária local do grupo de disponibilidade AccountsAG.
ALTER DATABASE AccountsDb1 SET HADR AVAILABILITY GROUP = AccountsAG;
Observação |
---|
Para consultar esta instrução Transact-SQL usada em contexto, consulte Criar um grupo de disponibilidade (Transact-SQL). |
Consulte também
Referência
ALTER AVAILABILITY GROUP (Transact-SQL)
CREATE AVAILABILITY GROUP (Transact-SQL)
Conceitos
Visão geral de grupos de disponibilidade AlwaysOn (SQL Server)
Solucionar problemas de configuração de grupos de disponibilidade AlwaysOn (SQL Server)