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_originators
where 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 uniqueidentifier
select @currentGuid = recovery_fork_guid
from sys.database_recovery_status
where 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.