Gilt für
SQL Server 2019 on Windows SQL Server 2022 on Linux (all editions) SQL Server 2022 on Windows (all editions)

Problembeschreibung

Die sp_replmonitorsubscriptionpendingcmds gespeicherte Prozedur ist nicht mit der Peer-zu-Peer-Replikation (P2P) kompatibel. Es wird eine falsche Anzahl ausstehender Befehle zurückgegeben. Nachdem Sie diese Korrektur angewendet haben, sind sp_replmonitorsubscriptionpendingcmds mit der P2P-Replikation kompatibel.

Hinweis Die  Registerkarte "Nicht verteilte Befehle" eines Replikationsmonitors ruft sp_replmonitorsubscriptionpendingcmds im Hintergrund auf.

Lösung

Informationen zum kumulativen Update

Dieses Problem wurde in den folgenden kumulativen Updates für SQL Server behoben:

Hinweis Nachdem Sie dieses kumulative Update angewendet haben, melden sp_replmonitorsubscriptionpendingcmds möglicherweise weiterhin eine falsche Anzahl von ausstehenden Befehlen für die P2P-Replikation, wenn die MSrepl_originators Tabelle veraltete Einträge enthält.

Wenn die MSrepl_originators Tabelle veraltete Einträge enthält, generiert das Ausführen von sp_replmonitorsubscriptionpendingcmds die folgende Warnmeldung im SQL Server Fehlerprotokoll:

Warnung: Die Datenbankversion für die Abonnementdatenbank "<database_name>" kann nicht abgerufen werden. Die sp_replmonitorsubscriptionpendingcmdsmeldet möglicherweise die falsche Anzahl von ausstehenden Befehlen für die P2P-Replikation.

Um dieses Problem zu beheben, löschen Sie entweder die veralteten Einträge aus MSrepl_originators, oder übergeben Sie die richtige "dbversion" einer Abonnementdatenbank als subdb_version Argument , wenn Sie sp_replmonitorsubscriptionpendingcmds ausführen.

Tipps: Sie können eine der folgenden Methoden auswählen, um die "dbversion" einer Abonnementdatenbank zu finden:

  • Führen Sie die folgende Abfrage für eine Verteilungsdatenbank aus: select dbversion from MSrepl_originatorswhere publisher_database_id = <Publisher_Database_ID>and srvname = <Subscriber_Server>and dbname = <Subscriber_Database>Hinweis Sie müssen die entsprechenden Werte für <Publisher_Database_ID> , <Subscriber_Server> und <Subscriber_Database> ersetzen.

  • Führen Sie die folgende Abfrage für eine Abonnementdatenbank aus: 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

Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und Sicherheitsfixes aus dem vorherigen Build. Es wird empfohlen, den neuesten Build für Ihre Version von SQL Server zu installieren:

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Informationsquellen

Erfahren Sie mehr über die Terminologie , die Microsoft zum Beschreiben von Softwareupdates verwendet.

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.