Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure 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.