Partilhar via


Suspender um banco de dados de disponibilidade (SQL Server)

Aplica-se a:SQL Server

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

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

Base de dados suspensa Efeito do comando Suspender
Base de dados secundária Somente o banco de dados secundário local é suspenso e seu estado de sincronização torna-se NÃO SINCRONIZADOR. 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 atrás do banco de dados primário. As conexões existentes no secundário legível permanecem utilizáveis. Novas conexões com o banco de dados suspenso no secundário legível não são permitidas até que a movimentação de dados seja retomada. Este comportamento só se aplica quando as conexões são abertas usando listener e roteamento de leitura apenas.

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

** Importante ** Enquanto um banco de dados secundário é suspenso, a fila de envio do banco de dados primário correspondente acumulará registros de log de transações não enviados. As conexões com a réplica secundária retornam dados que estavam disponíveis no momento em que a movimentação de dados foi suspensa.
Base de dados primária O banco de dados primário interrompe a movimentação de dados para cada banco de dados secundário conectado. O banco de dados primário continua em execução, em um modo exposto. O banco de dados primário permanece disponível para os clientes, e as conexões existentes em um secundário legível permanecem utilizáveis e novas conexões podem ser feitas.

Observação

A suspensão de um banco de dados secundário Always On não afeta diretamente a disponibilidade do banco de dados primário. No entanto, a suspensão de um banco de dados secundário pode afetar os recursos de redundância e failover do banco de dados primário. Isso contrasta com o espelhamento de banco de dados, em que o estado de espelhamento é suspenso no banco de dados espelho e no banco de dados principal. A suspensão de um banco de dados primário Always On suspende a movimentação de dados em todos os bancos de dados secundários correspondentes, e os recursos de redundância e failover cessam para esse banco de dados até que o banco de dados primário seja retomado.

Antes de começar

Limitações e Restrições

Um comando SUSPEND retorna assim que for 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 do servidor que hospeda o banco de dados que deseja suspender. Para suspender um banco de dados primário e os bancos de dados secundários correspondentes, conecte-se à instância do 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 os gargalos, suspender brevemente um ou mais bancos de dados secundários pode ser útil para melhorar temporariamente o desempenho na réplica primária. Enquanto um banco de dados secundário permanecer 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 se acumulem no banco de dados primário. Portanto, recomendamos que você retome ou remova um banco de dados secundário suspenso rapidamente. Para obter mais informações, consulte Acompanhamento: Evitando o preenchimento completo do log de transações, mais adiante neste tópico.

Segurança

Permissões

Requer 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.

Usando o SQL Server Management Studio

Para suspender um banco de dados

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

  2. Expanda o nó Always On High Availability e o nó Availability Groups.

  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 Movimentação de Dados.

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

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

Observação

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

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 a base de dados usando a seguinte instrução ALTER DATABASE :

    ALTER DATABASE database_name SET 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é-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 de dados para o banco de dados de disponibilidade MyDb3 no grupo de disponibilidade MyAg na instância do servidor chamada 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 Obter Ajuda do SQL Server PowerShell.

Para configurar e usar o provedor do SQL Server PowerShell

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 para esse ponto de verificação após o próximo backup de log. No entanto, enquanto um banco de dados secundário é suspenso, todos os registros de log atuais permanecem ativos no banco de dados primário. Se o log de transações for preenchido (porque atinge seu tamanho máximo ou porque a instância do servidor fica sem espaço), o banco de dados não poderá executar mais atualizações.

Para evitar esse problema, siga um destes procedimentos:

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

Tarefas relacionadas

Ver também

Visão geral dos grupos de disponibilidade Always On (SQL Server)
Retomar um banco de dados de disponibilidade (SQL Server)