Applies ToSQL Server 2019 on Windows SQL Server 2022 on Linux (all editions) SQL Server 2022 on Windows (all editions)

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.

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.