Partilhar via


MSSQL_ENG018752

Aplica-se a:SQL ServerAzure SQL Managed Instance

Detalhes da Mensagem

Attribute Valor
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 Apenas um Log Reader Agent ou procedimento relacionado a log (sp_repldone, sp_replcmds e sp_replshowcmds) pode se conectar a um banco de dados de cada vez. Se você executou um procedimento relacionado ao log, descarte a conexão na qual o procedimento foi executado ou execute sp_replflush sobre essa conexão antes de iniciar o Log Reader Agent ou executar outro procedimento relacionado ao log.

Explanation

Mais do que uma ligação atual está a tentar executar qualquer uma das seguintes: 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 Agente Leitor de Registo para localizar e atualizar informações sobre transações replicadas numa base de dados publicada. O procedimento armazenado sp_replshowcmds (Transact-SQL) é usado para resolver certos tipos de problemas relacionados com a replicação transacional.

Este erro é levantado nas seguintes circunstâncias:

  • Se o Agente Leitor de Registos de uma base de dados publicada estiver a correr e um segundo Agente Leitor de Registos tentar correr contra a mesma base de dados, o erro é gerado para o segundo agente e aparece no histórico do agente.

    Numa situação em que parece haver múltiplos agentes, é possível que um deles seja resultado de um processo órfão.

  • Se o Agente Leitor de Registo para uma base de dados publicada for iniciado e um utilizador executar sp_repldone, sp_replcmds ou sp_replshowcmds contra a mesma base de dados, o erro é gerado na aplicação onde o procedimento armazenado foi executado (como o sqlcmd).

  • Se não estiver a correr nenhum Agente Leitor de Registo para uma base de dados publicada e um utilizador executar sp_repldone, sp_replcmds ou sp_replshowcmds e depois não fechar a ligação sobre a qual o procedimento foi executado, o erro surge quando o Agente Leitor de Registo tenta ligar-se à base de dados.

Ação do Usuário

Os passos seguintes podem ajudá-lo a resolver o problema. Se algum passo permitir que o Agente Leitor de Registo inicie sem erros, não é necessário completar os passos restantes.

  • Verifique o histórico do agente do Leitor de Registos para quaisquer outros erros que possam estar a contribuir para este erro. Para informações sobre a visualização do estado do agente e detalhes de erro no Monitor de Replicação, consulte Ver Informação e Executar Tarefas com o Monitor de Replicação.

  • Verifique a saída de sp_who (Transact-SQL) para números específicos de identificação de processos (SPIDs) que estão ligados à base de dados publicada. Fecha quaisquer ligações que possam ter corrido sp_repldone, sp_replcmds ou sp_replshowcmds.

  • Reinicie o agente do leitor de registos. Para mais informações, consulte Iniciar e Parar um Agente de Replicação (SQL Server Management Studio).

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

  • Execute sp_replflush (Transact-SQL) no Publisher na base de dados de publicações e depois reinicie o Log Reader Agent.

  • Se o erro continuar a ocorrer, aumente o registo do agente e especifique um ficheiro de saída para o registo. Dependendo do contexto do erro, isto pode fornecer os passos que conduzem ao erro e/ou mensagens de erro adicionais.