Symptomy
Procedura składowana sp_replmonitorsubscriptionpendingcmds nie jest zgodna z replikacją równorzędną (P2P). Zwraca nieprawidłową liczbę oczekujących poleceń. Po zastosowaniu tej poprawki sp_replmonitorsubscriptionpendingcmds będą zgodne z replikacją P2P.
UwagaKarta "Nierozłączone polecenia" monitora replikacji wywołuje sp_replmonitorsubscriptionpendingcmds w tle.
Rozwiązanie
Informacje o aktualizacji zbiorczej
Ten problem został rozwiązany w następujących aktualizacjach zbiorczych dla SQL Server:
Uwaga Po zastosowaniu tej aktualizacji zbiorczej sp_replmonitorsubscriptionpendingcmds może nadal zgłaszać niepoprawną liczbę oczekujących poleceń replikacji P2P, jeśli tabela MSrepl_originators zawiera nieaktualne wpisy.
Jeśli tabela MSrepl_originators zawiera nieaktualne wpisy, uruchomienie sp_replmonitorsubscriptionpendingcmds spowoduje wygenerowanie następującego komunikatu ostrzegawczego w dzienniku błędów SQL Server:
Ostrzeżenie: Nie można uzyskać wersji bazy danych dla bazy danych subskrypcji " <database_name>". Sp_replmonitorsubscriptionpendingcmdsmoże zgłaszać nieprawidłową liczbę oczekujących poleceń replikacji P2P.
Aby rozwiązać ten problem, usuń nieaktualne wpisy z MSrepl_originators lub przekaż poprawną "dbversion" bazy danych subskrypcji jako argument subdb_version podczas uruchamiania sp_replmonitorsubscriptionpendingcmds.
Porady: Aby znaleźć "dbversion" bazy danych subskrypcji, możesz wybrać jedną z następujących metod:
-
Uruchom następujące zapytanie w bazie danych dystrybucji: select dbversion from MSrepl_originators
where publisher_database_id = <Publisher_Database_ID>
and srvname = <Subscriber_Server>
and dbname = <Subscriber_Database>
Uwaga Należy zastąpić odpowiednie wartości <Publisher_Database_ID>, <Subscriber_Server> i <Subscriber_Database>. -
Uruchom następujące zapytanie w bazie danych subskrypcji: 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
Każda nowa aktualizacja zbiorcza dla SQL Server zawiera wszystkie poprawki i poprawki zabezpieczeń, które były w poprzedniej kompilacji. Zalecamy zainstalowanie najnowszej kompilacji dla twojej wersji SQL Server:
Stan
Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".
Informacje
Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.