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:
- Rimuovere il failover automatico sulla replica secondaria con commit sincrono
- Aggiorna le istanze del server secondario alla nuova versione
- Failover manuale sulla replica secondaria
- Verificare che i database siano online sulla nuova replica primaria
- 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:
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?