Partilhar via


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.

Ícone de vínculo de tópico 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çãoObservaçã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).

      Observação importanteImportante

      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.

    Observação importanteImportante

    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çãoObservaçã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çãoObservaçã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 DATABASE (Transact-SQL)

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)