Suspender um banco de dados de disponibilidade (SQL Server)

Aplica-se a:SQL Server

Você pode suspender um banco de dados de disponibilidade nos Grupos de Disponibilidade Always On usando o SQL Server Management Studio, o Transact-SQL ou o PowerShell no SQL Server. Observe que um comando para suspender precisa ser emitido na instância do servidor que hospeda o banco de dados para ser suspenso ou retomado.

O efeito de um comando de suspensão depende de se você suspende um banco de dados secundário ou um banco de dados primário, da seguinte maneira:

Banco de dados suspenso Efeito do comando de suspensão
Banco de dados secundário Somente o banco de dados secundário local é suspenso e seu estado de sincronização torna-se NOT SYNCHRONIZING. Outros bancos de dados secundários não são afetados. O banco de dados suspenso para de receber e aplicar dados (registros de log) e começa a ficar defasado em relação ao banco de dados primário. As conexões existentes no secundário legível continuam 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. Esse comportamento se aplica somente quando as conexões são abertas usando o ouvinte e o roteamento somente leitura.

O banco de dados primário permanece disponível. Se você suspender cada um dos bancos de dados secundários correspondentes, o banco de dados primário fica exposto.

** 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.
Banco de dados primário O banco de dados primário interrompe a movimentação de dados para todos os bancos de dados secundários conectados. O banco de dados primário continua sendo executado em um modo exposto. O banco de dados primário permanece disponível para clientes, e as conexões existentes em um banco de dados secundário legível permanecem utilizáveis e novas conexões podem ser feitas.

Observação

Suspender um banco de dados secundário AlwaysOn não afeta diretamente a disponibilidade do banco de dados primário. No entanto, suspender um banco de dados secundário pode afetar os recursos de redundância e failover do banco de dados primário. 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. Suspender um banco de dados primário do Always On suspende a movimentação de dados em todos os bancos de dados secundários correspondentes, e a redundância e os recursos de failover deixam de estar disponíveis para esse banco de dados até que o banco de dados primário seja retomado.

Limitações e Restrições

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.

Pré-requisitos

Você deve estar conectado à instância de servidor que hospeda o banco de dados a ser suspenso. Para suspender um banco de dados primários e os bancos de dados secundários correspondentes, conecte-se à instância de servidor que hospeda a réplica primária. Para suspender um banco de dados secundário deixando o banco de dados primário disponível, conecte-se à réplica secundária.

Recomendações

Durante gargalos, a suspensão de um ou mais bancos de dados secundários brevemente poderá ser útil para melhorar temporariamente o desempenho na réplica primária. Desde que um banco de dados secundário permaneça suspenso, o log de transações do banco de dados primário correspondente não poderá ser truncado. Isso faz com que os registros de log sejam acumulados no banco de dados primário. Portanto, é recomendável retomar ou remover um banco de dados secundário suspenso rapidamente. Para obter mais informações, consulte Continuação: evitando que o log de transações fique cheio, mais adiante neste tópico.

Permissões

Requer a permissão ALTER no banco de dados.

Exige permissão ALTER AVAILABILITY GROUP no grupo de disponibilidade, permissão CONTROL AVAILABILITY GROUP, permissão ALTER ANY AVAILABILITY GROUP ou permissão CONTROL SERVER.

Como usar o SQL Server Management Studio.

Para suspender um banco de dados

  1. No Pesquisador de Objetos, conecte-se à instância de servidor que hospeda a réplica de disponibilidade na qual você deseja suspender um banco de dados e expanda a árvore de servidores. Para obter mais informações, consulte Pré-requisitosanteriormente neste tópico.

  2. Expanda os nós Alta Disponibilidade Always On e Grupos de Disponibilidade.

  3. Expanda o grupo de disponibilidade.

  4. Expanda o nó Bancos de Dados de Disponibilidade, clique com o botão direito do mouse no banco de dados e clique em Suspender a Movimentação de Dados.

  5. Na caixa de diálogo Suspender a Movimentação de Dados , clique em OK.

    O Pesquisador de Objetos indica que o banco de dados está suspenso alterando o ícone de banco de dados para exibir um indicador de pausa.

Observação

Para suspender bancos de dados adicionais neste local de réplica, repita as etapas 4 e 5 para cada banco de dados.

Usando o Transact-SQL

Para suspender um banco de dados

  1. Conecte-se à instância do servidor que hospeda a réplica cujo banco de dados você deseja suspender. Para obter mais informações, consulte Pré-requisitosanteriormente neste tópico.

  2. Suspenda o banco de dados usando a seguinte ALTER DATABASE instrução:

    ALTER DATABASE database_nameSET HADR SUSPEND;

Usando o PowerShell

Para suspender um banco de dados

  1. Altere o diretório (cd) para a instância do servidor que hospeda a réplica cujo banco de dados você deseja suspender. Para obter mais informações, consulte Pré-requisitosanteriormente neste tópico.

  2. Use o cmdlet Suspend-SqlAvailabilityDatabase para suspender o grupo de disponibilidade.

    Por exemplo, o comando a seguir suspende a sincronização de dados para o banco de dados de disponibilidade MyDb3 no grupo de disponibilidade MyAg na instância de servidor denominada Computer\Instance.

    Suspend-SqlAvailabilityDatabase `   
    -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb3  
    

    Observação

    Para exibir a sintaxe de um cmdlet, use o cmdlet Get-Help no ambiente do SQL Server PowerShell. Para obter mais informações, consulte Get Help SQL Server PowerShell.

Para configurar e usar o provedor do SQL Server PowerShell

Continuação: Evitando que o log de transações fique cheio

Normalmente, quando ocorre um ponto de verificação automático em um banco de dados, seu log de transações é truncado até esse ponto de verificação após o próximo backup do log. Porém, enquanto um banco de dados secundário está suspenso, todos os registros de log atuais permanecem ativos no banco de dados primário. Se o log de transações ficar cheio (por ter atingido seu tamanho máximo ou porque a instância de servidor ficou sem espaço), o banco de dados não poderá executar mais nenhuma atualização.

Para evitar esse problema, você deverá proceder da seguinte maneira:

Para solucionar problemas de um log de transações completo

Tarefas Relacionadas