Suspender um banco de dados de disponibilidade (SQL Server)

Você pode suspender um banco de dados de disponibilidade no Grupos de Disponibilidade AlwaysOn usando SQL Server Management Studio, Transact-SQL ou PowerShell no SQL Server 2012. 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 ficar desatualizado em relação ao banco de dados primário. 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.

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 será executado exposto.

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.

Banco de dados primário

O banco de dados primário para o movimento 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çãoObservação

Suspender um banco de dados secundário AlwaysOn não afetam diretamente a disponibilidade do banco de dados primário. Porém, suspender um banco de dados secundário pode afetar os recursos de redundância e failover para o 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 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.

  • Antes de começar:

    Limitações e restrições

    Pré-requisitos

    Recomendações

    Segurança

  • Para suspender um banco de dados usando:  

  • SQL Server Management Studio

    Transact-SQL

    PowerShell

  • Acompanhamento:  Evitando um log de transações completo

  • Tarefas relacionadas

Antes de começar

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 afunilamentos, 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 Acompanhamento: evitando um log de transações cheio, posteriormente neste tópico.

Segurança

Permissões

Requer a permissão ALTER no banco de dados.

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

Ícone de seta usado com o link Voltar ao Início[Início]

Usando 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é-requisitos anteriormente neste tópico.

  2. Expanda os nós Alta Disponibilidade AlwaysOn 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 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çãoObservação

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

Ícone de seta usado com o link Voltar ao Início[Início]

Usando 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é-requisitos anteriormente neste tópico.

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

    ALTER DATABASE database_name SET HADR SUSPEND

Ícone de seta usado com o link Voltar ao Início[Início]

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é-requisitos anteriormente 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 dos dados para o banco de dados de disponibilidade MyDb3 no grupo de disponibilidade MyAg na instância de servidor chamada Computer\Instance.

    Suspend-SqlAvailabilityDatabase ` 
    -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\Databases\MyDb3
    
    ObservaçãoObservaçã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 Obter Ajuda do SQL Server PowerShell.

Para configurar e usar o provedor do SQL Server PowerShell

Ícone de seta usado com o link Voltar ao Início[Início]

Acompanhamento: evitando um log de transações completo

Normalmente, quando um ponto de verificação automático é executado em um banco de dados, seu log de transações é truncado àquele ponto de verificação após o próximo backup de 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

Ícone de seta usado com o link Voltar ao Início[Início]

Tarefas relacionadas

Consulte também

Conceitos

Visão geral de grupos de disponibilidade AlwaysOn (SQL Server)

Retomar um banco de dados de disponibilidade (SQL Server)