Sintomas
O procedimento armazenado sp_replmonitorsubscriptionpendingcmds não é compatível com a replicação P2P (ponto a ponto). Ele retorna um número incorreto de comandos pendentes. Depois de aplicar essa correção, sp_replmonitorsubscriptionpendingcmds será compatível com a replicação P2P.
Nota A guia "Comandos não atribuídos" de um Monitor de Replicação invoca sp_replmonitorsubscriptionpendingcmds nos bastidores.
Resolução
Informações sobre a atualização cumulativa
Esse problema é corrigido nas seguintes atualizações cumulativas para SQL Server:
Observação Depois de aplicar essa atualização cumulativa, sp_replmonitorsubscriptionpendingcmds ainda poderá relatar um número incorreto de comandos pendentes para replicação P2P se a tabela MSrepl_originators contiver entradas obsoletas.
Se a tabela MSrepl_originators contiver entradas obsoletas, a execução sp_replmonitorsubscriptionpendingcmds gerará a seguinte mensagem de aviso no log de erros do SQL Server:
Aviso: não é possível obter a versão do banco de dados para o banco de dados de assinatura ' <database_name>'. O sp_replmonitorsubscriptionpendingcmdspode relatar o número incorreto de comandos pendentes para replicação P2P.
Para resolve esse problema, exclua as entradas obsoletas de MSrepl_originators ou passe a "dbversion" correta de um banco de dados de assinatura como um argumento subdb_version quando você executar sp_replmonitorsubscriptionpendingcmds.
Dicas: Você pode selecionar um dos seguintes métodos para encontrar a "dbversion" de um banco de dados de assinatura:
-
Execute a seguinte consulta em um banco 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>Observação
Você precisa substituir os valores apropriados para <Publisher_Database_ID> , <Subscriber_Server> e <Subscriber_Database>. -
Execute a seguinte consulta em um banco de dados de assinatura: 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 todos os hotfixes e correções de segurança que estavam no build anterior. Recomendamos instalar o build mais recente para sua versão do SQL Server:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.