Database AlwaysOn di SQL Server bloccato in modalità Non sincronizzato / In ripristino dopo l'aggiornamento. Errore: impossibile aprire il database '…' versione 782


10

Durante il test di un aggiornamento da SQL Server 2014 SP1 (12.0.4422.0) a SQL Server 2016 CTP 3.2 (13.0.900.73) stavo seguendo il processo di aggiornamento consigliato e ho riscontrato un problema in cui il database non si avviava sul vecchio primario dopo il failover al secondario aggiornato. La nostra configurazione è una replica primaria e una singola replica secondaria e i passaggi che ho completato sono stati:

  1. Rimuovere il failover automatico sulla replica secondaria con commit sincrono
  2. Aggiorna le istanze del server secondario alla nuova versione
  3. Failover manuale sulla replica secondaria
  4. Verificare che i database siano online sulla nuova replica primaria
  5. Aggiorna la replica precedente-primaria alla nuova versione

L'aggiornamento del secondario e il failover per renderlo primario hanno funzionato esattamente come previsto. Ma dopo aver aggiornato la replica precedentemente primaria ho notato che i database in essa contenuti erano elencati in SSMS come Non sincronizzati / In ripristino . Anche tentare di accedervi genererebbe un messaggio di errore:

Il database ... non è accessibile. (ObjectExplorer)

Controllando attraverso i registri di SQL Server che ho visto

Impossibile aprire il database '...' versione 782. Aggiornare il database all'ultima versione.

L'interrogazione della tabella dei database master..sys ha dimostrato che si trattava effettivamente di una versione precedente e non era stata aggiornata durante l'aggiornamento:

Versione dei database di sistemi SSMS

Sfortunatamente i log non indicavano il motivo per cui non era stato aggiornato e il dashboard dei gruppi di disponibilità forniva solo un avviso generico che indicava che lo stato di sincronizzazione dei dati di alcuni database di disponibilità non è integro senza motivo.

Ho provato a usare TSQL per staccare i database o metterli offline per "dare il via" all'aggiornamento, ma poiché fanno parte di SQL AG quei comandi non funzionano.

Come posso aggiornare il database all'ultima versione quando fa parte di una SQL AG?

Risposte:


10

Dopo aver frugato in SSMS per un po ', ho notato che sulla replica secondaria c'era un'icona di pausa accanto ai database di disponibilità. Il primario aveva mostrato che entrambi erano "verdi", ma c'era un'opzione sul secondario per Riprendi movimento dati . Ho ripreso il primo database e immediatamente il messaggio di stato In Recovery è stato rimosso. Un minuto dopo è passato da Non sincronizzato a Sincronizzato e tutto ha funzionato come previsto.

Ecco uno screenshot dei database AG dopo aver corretto "Patch", ma prima di correggere il database di test:

Riprendi spostamento dati su SQL AG

Nota: puoi anche utilizzare TSQL sul secondario per riprendere la replica su più database contemporaneamente:

ALTER DATABASE [Patch] SET HADR RESUME;
ALTER DATABASE [test] SET HADR RESUME;
GO

1
Sai cosa ha causato la sospensione della replica? e posso scoprirlo da quando la replica è stata messa in pausa?
JohnG,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.