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_originators
where 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 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
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.