Dotyczy
SQL Server 2019 on Windows SQL Server 2022 on Linux (all editions) SQL Server 2022 on Windows (all editions)

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_originatorswhere 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 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

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.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.