Simptome
Procedura stocată sp_replmonitorsubscriptionpendingcmds nu este compatibilă cu replicarea peer-to-peer (P2P). Returnează un număr incorect de comenzi în așteptare. După ce aplicați această remediere, sp_replmonitorsubscriptionpendingcmds va fi compatibil cu replicarea P2P.
Notă Fila "Comenzi nedistribuite" a unui Monitor de reproducere invocă sp_replmonitorsubscriptionpendingcmds în culise.
Rezolvare
Informații despre actualizarea cumulativă
Această problemă este remediată în următoarele actualizări cumulative pentru SQL Server:
Notă După ce aplicați această actualizare cumulativă, sp_replmonitorsubscriptionpendingcmds poate raporta în continuare un număr incorect de comenzi în așteptare pentru reproducerea P2P dacă tabelul MSrepl_originators conține intrări învechite.
Dacă tabelul MSrepl_originators conține intrări învechite, rularea sp_replmonitorsubscriptionpendingcmds va genera următorul mesaj de avertizare în jurnalul de erori SQL Server:
Avertisment: Imposibil de obținut versiunea bazei de date pentru baza de date de abonare "<database_name>". Sp_replmonitorsubscriptionpendingcmdspoate raporta numărul incorect de comenzi în așteptare pentru replicarea P2P.
Pentru a rezolva această problemă, ștergeți intrările învechite din MSrepl_originators sau transmiteți "dbversion" corect al unei baze de date de abonare ca argument subdb_version atunci când rulați sp_replmonitorsubscriptionpendingcmds.
Sfaturi: Puteți selecta oricare dintre următoarele metode pentru a găsi "dbversion" a unei baze de date de abonament:
-
Rulați următoarea interogare într-o bază de date de distribuire: select dbversion from MSrepl_originators
where publisher_database_id = <Publisher_Database_ID>
and srvname = <Subscriber_Server>
and dbname = <Subscriber_Database>
Notă Trebuie să înlocuiți valorile corespunzătoare cu <Publisher_Database_ID> , <Subscriber_Server> și <Subscriber_Database>. -
Rulați următoarea interogare într-o bază de date de abonare: declare @current_version int , @currentGuid uniqueidentifier
select @currentGuid = recovery_fork_guid
from sys.database_recovery_status#x3
select @current_version = substring(convert(binary(16), isnull(@currentGuid, 0x0)),1,6)
print @current_version
Fiecare actualizare cumulativă nouă pentru SQL Server conține toate remedierile rapide și remedierile de securitate care au fost în versiunea anterioară. Vă recomandăm să instalați cea mai recentă versiune pentru versiunea dvs. de SQL Server:
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.
Referințe
Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.