Aplica-se A
SQL Server 2019 on Windows SQL Server 2022 on Linux (all editions) SQL Server 2022 on Windows (all editions)

Sintomas

O procedimento armazenado sp_replmonitorsubscriptionpendingcmds não é compatível com a replicação ponto a ponto (P2P). Devolve um número incorreto de comandos pendentes. Depois de aplicar esta correção, sp_replmonitorsubscriptionpendingcmds será compatível com a replicação P2P.

NotaO  separador "Comandos Não Atribuídos" de um Monitor de Replicação invoca sp_replmonitorsubscriptionpendingcmds em segundo plano.

Resolução

Informações de atualização cumulativa

Este problema foi corrigido nas seguintes atualizações cumulativas para SQL Server:

Nota Depois de aplicar esta atualização cumulativa, sp_replmonitorsubscriptionpendingcmds ainda poderá comunicar um número incorreto de comandos pendentes para a replicação P2P se a tabela MSrepl_originators contiver entradas obsoletas.

Se a tabela MSrepl_originators contiver entradas obsoletas, executar sp_replmonitorsubscriptionpendingcmds irá gerar a seguinte mensagem de aviso no registo de erros SQL Server:

Aviso: Não é possível obter a versão da base de dados para a base de dados de subscrição " <database_name>". O sp_replmonitorsubscriptionpendingcmdspode comunicar o número incorreto de comandos pendentes para a replicação P2P.

Para resolver este problema, elimine as entradas obsoletas de MSrepl_originators ou transmita a "dbversion" correta de uma base de dados de subscrição como argumento subdb_version  quando executar sp_replmonitorsubscriptionpendingcmds.

Sugestões: Pode selecionar um dos seguintes métodos para encontrar a "dbversion" de uma base de dados de subscrição:

  • Execute a seguinte consulta numa base de dados de distribuição: select dbversion from MSrepl_originatorswhere publisher_database_id = <Publisher_Database_ID>and srvname = <Subscriber_Server>and dbname = <Subscriber_Database>Nota Tem de substituir os valores adequados por <Publisher_Database_ID>, <Subscriber_Server> e <Subscriber_Database>.

  • Execute a seguinte consulta numa base de dados de subscrição: declare @current_version int , @currentGuid uniqueidentifierselect @currentGuid = recovery_fork_guidfrom sys.database_recovery_statuswhere database_id = db_id()select @current_version = substring(convert(binary(16), isnull(@currentGuid, 0x0)),1,6)print @current_version

Cada nova atualização cumulativa para SQL Server contém todas as correções e correções de segurança que estavam na compilação anterior. Recomendamos que instale a compilação mais recente para a sua versão do SQL Server:

Estado

A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".

Referências

Saiba mais sobre a terminologia que a Microsoft utiliza para descrever as atualizações de software.

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.