Partilhar via


MSSQL_ENG018752

Detalhes da mensagem

Nome do produto SQL Server
ID do evento 18752
Origem do evento MSSQLSERVER
Componente Mecanismo de Banco de Dados do SQL Server
Nome simbólico
Texto da mensagem Somente um Agente de Leitor de Log ou um procedimento relacionado ao log (sp_repldone, sp_replcmds e sp_replshowcmds) pode se conectar ao banco de dados de cada vez. Se você tiver executado um procedimento relacionado ao log, descarte a conexão através da qual o procedimento foi executado ou execute sp_replflush por essa conexão antes de iniciar o Agente de Leitor de Log ou de executar outro procedimento relacionado ao log.

Explicação

Mais de uma conexão atual está tentando executar qualquer uma das seguintes opções: sp_repldone, sp_replcmds ou sp_replshowcmds. Os procedimentos armazenados sp_repldone (Transact-SQL) e sp_replcmds (Transact-SQL) são procedimentos armazenados usados pelo Log Reader Agent para localizar e atualizar informações sobre transações replicadas em um banco de dados publicado. O procedimento armazenado sp_replshowcmds (Transact-SQL) é usado para solucionar determinados tipos de problemas com replicação transacional.

Esse erro é gerado nas seguintes circunstâncias:

  • Se o Agente de Leitor de Log para um banco de dados publicado estiver em execução e um segundo Agente de Leitor de Log tentar executar no mesmo banco de dados, o erro será gerado para o segundo agente e aparecerá no histórico do agente.

    Em uma situação em que parece haver vários agentes, é possível que um deles seja o resultado de um processo órfão.

  • Se o Agente de Leitor de Log para um banco de dados publicado for iniciado e um usuário executar sp_repldone, sp_replcmds ou sp_replshowcmds no mesmo banco de dados, o erro será gerado no aplicativo em que o procedimento armazenado foi executado (como o sqlcmd).

  • Se nenhum Agente de Leitor de Log estiver em execução para um banco de dados publicado e um usuário executar sp_repldone, sp_replcmds ou sp_replshowcmds e, em seguida, não fechar a conexão sobre a qual o procedimento foi executado, o erro será gerado quando o Agente de Leitor de Log tentar se conectar ao banco de dados.

Ação do usuário

As etapas a seguir podem ajudá-lo a solucionar o problema. Se qualquer etapa permitir que o Agente de Leitor de Log inicie sem erros, não será necessário concluir as etapas restantes.

  • Verifique o histórico do agente Leitor de Log para identificar outros erros que possam estar contribuindo para esse problema. Para obter informações sobre como exibir o status do agente e detalhes de erro no Replication Monitor, consulte Exibir Informações e Executar Tarefas usando o Replication Monitor.

  • Verifique a saída de sp_who (Transact-SQL) para obter SPIDs (números de identificação de processo) específicos que estão conectados ao banco de dados publicado. Feche todas as conexões que possam ter executado sp_repldone, sp_replcmds ou sp_replshowcmds.

  • Reinicie o Agente de Leitor de Log. Para obter mais informações, confira Iniciar e interromper um agente de replicação (SQL Server Management Studio).

  • Reinicie o serviço SQL Server Agent (coloque-o offline ou online em um cluster) no Distribuidor. Se houver a possibilidade de que um trabalho agendado possa ter sido executado sp_repldone, sp_replcmds ou sp_replshowcmds de qualquer outra instância do SQL Server, reinicie o SQL Server Agent para essas instâncias também. Para obter mais informações, consulte Iniciar, Parar ou Pausar o Serviço do SQL Server Agent.

  • Execute sp_replflush (Transact-SQL) no Publicador da base de dados de publicação e, em seguida, reinicie o Agente Leitor de Log.

  • Se o erro continuar a ocorrer, aumente o registro em log do agente e especifique um arquivo de saída para o log. Dependendo do contexto do erro, isso pode fornecer as etapas que antecedem o erro e/ou mensagens de erro adicionais.

Consulte Também

Referência de erros e eventos (replicação)
Agente Leitor de Log de Replicação