Sintomi
La stored procedure sp_replmonitorsubscriptionpendingcmds non è compatibile con la replica peer-to-peer (P2P). Restituisce un numero errato di comandi in sospeso. Dopo aver applicato questa correzione, sp_replmonitorsubscriptionpendingcmds sarà compatibile con la replica P2P.
Nota La scheda "Comandi non distribuiti" di un monitor di replica richiama sp_replmonitorsubscriptionpendingcmds dietro le quinte.
Risoluzione
Informazioni sugli aggiornamenti cumulativi
Questo problema è stato risolto negli aggiornamenti cumulativi seguenti per SQL Server:
NotaDopo aver applicato questo aggiornamento cumulativo, sp_replmonitorsubscriptionpendingcmds potrebbe comunque segnalare un numero errato di comandi in sospeso per la replica P2P se la tabella MSrepl_originators contiene voci non aggiornate.
Se la tabella MSrepl_originators contiene voci non aggiornate, l'esecuzione di sp_replmonitorsubscriptionpendingcmds genererà il seguente messaggio di avviso nel log degli errori di SQL Server:
Avviso: non è possibile ottenere la versione del database per il database di sottoscrizione ' <database_name>'. Il sp_replmonitorsubscriptionpendingcmdspotrebbe segnalare il numero errato di comandi in sospeso per la replica P2P.
Per risolvere il problema, eliminare le voci non aggiornate da MSrepl_originators o passare la "dbversion" corretta di un database di sottoscrizione come argomento subdb_version quando si esegue sp_replmonitorsubscriptionpendingcmds.
Suggerimenti: È possibile selezionare uno dei metodi seguenti per trovare la "dbversion" di un database di sottoscrizione:
-
Eseguire la query seguente in un database di distribuzione: select dbversion from MSrepl_originatorswhere publisher_database_id = <Publisher_Database_ID>and srvname = <Subscriber_Server>and dbname = <Subscriber_Database> Nota È necessario sostituire i valori appropriati con <Publisher_Database_ID> , <Subscriber_Server> e <Subscriber_Database>.
-
Eseguire la query seguente in un database di sottoscrizione: 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
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli aggiornamenti rapidi e le correzioni per la sicurezza inclusi nella build precedente. È consigliabile installare la build più recente per la versione di SQL Server:
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.