Suspender um banco de dados de disponibilidade (SQL Server)
Aplica-se a: SQL Server
Você pode suspender um banco de dados de disponibilidade no Grupos de Disponibilidade Always On usando SQL Server Management Studio, Transact-SQL ou 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 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. 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 será executado 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 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ção
Suspender um banco de dados secundário AlwaysOn não afeta 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:
Para suspender um banco de dados usando:
Acompanhamento: evitando um log de transações cheio
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 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, veja Acompanhamento: evitar um log de transações cheio mais adiante 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.
Como usar o SQL Server Management Studio.
Para suspender um banco de dados
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.
Expanda os nós Alta Disponibilidade AlwaysOn e Grupos de Disponibilidade.
Expanda o grupo de disponibilidade.
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.
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
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.
Suspenda o banco 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
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.
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 disponibilidadeMyAg
na instância de servidor denominadaComputer\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
Acompanhamento: evitando um log de transações cheio
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:
Adicionar mais espaço de log para o banco de dados primário.
Retomar o banco de dados secundário antes de o log ficar cheio. Para obter mais informações, confira Retomar um Banco de Dados de Disponibilidade (SQL Server).
Remover um banco de dados secundário. Para obter mais informações, confira Remover um banco de dados secundário de um grupo de disponibilidade (SQL Server).
Para solucionar problemas de um log de transações completo
Related Tasks
Consulte Também
Visão geral dos Grupos de Disponibilidade AlwaysOn (SQL Server)
Retomar um banco de dados de disponibilidade (SQL Server)