Os bancos de dados espelhados são desconectados depois que você reinicia o espelho de banco de dados no SQL Server

Este artigo ajuda você a resolve o problema em que bancos de dados espelhados são deixados em um estado Desconectado ou em Recuperação.

Versão original do produto: SQL Server
Número de KB original: 2490051

Sintoma

Considere o seguinte cenário:

  • Você tem um computador que está executando uma instância secundária do Microsoft SQL Server em um banco de dados de dois servidores espelho.

  • O uso da CPU atinge 100% no computador e você não pode parar o serviço de SQL Server usando SQL Server Ferramentas de Gerenciamento.

  • Você encerra o processo da SQL Server instância secundária usando o Gerenciador de Tarefas.

  • Reinicie a instância secundária do SQL Server.

Nesse cenário, todos os bancos de dados espelhados estão em um estado Desconectado ou em Recuperação . Além disso, uma mensagem de erro que se assemelha ao seguinte é registrada no log de erros SQL Server para cada banco de dados:

Ignorando a recuperação do banco de dados 'Nome do Banco de Dados' porque ele é marcado como um banco de dados de espelhamento de banco de dados inacessível. Existe um problema com a sessão de espelhamento. A sessão não tem quorum ou os links de comunicação são quebrados devido a problemas com links, configuração de ponto de extremidade ou permissões (para a conta do servidor ou certificado de segurança). Para obter acesso ao banco de dados, descubra o que mudou na configuração da sessão e desfaça a alteração.

Motivo

Esse problema ocorre devido a problemas nos pontos de extremidade de espelhamento de banco de dados SQL Server.

Resolução

Para resolve esse problema, use os métodos a seguir. Se o primeiro método não resolve o problema, use o segundo método.

Método 1

Recicle o ponto de extremidade no banco de dados espelho. Para fazer isso, siga estas etapas:

  1. No banco de dados principal, execute o seguinte script SQL para parar o ponto de extremidade:

    ALTER ENDPOINT <Endpoint Name> STATE=STOPPED
    
  2. Execute o seguinte script SQL para reiniciar o ponto de extremidade:

    ALTER ENDPOINT <Endpoint Name> STATE=STARTED
    

    Observação

    Se a comunicação entre os pontos de extremidade não for reiniciada após a execução dos scripts, execute os scripts no banco de dados espelho. No entanto, o banco de dados pode inserir um estado suspenso depois que você fizer isso. Se esse problema ocorrer, execute o seguinte script SQL:

    ALTER DATABASE <Database Name> SET PARTNER RESUME
    

Método 2

Exclua e crie novamente os pontos de extremidade de espelhamento de banco de dados em ambos os servidores.