Podczas testowania aktualizacji z SQL Server 2014 SP1 (12.0.4422.0) do SQL Server 2016 CTP 3.2 (13.0.900.73) postępowałem zgodnie z zalecanym procesem aktualizacji i natknąłem się na problem polegający na tym, że baza danych nie uruchamiałaby się na starym serwerze podstawowym po awarii do zaktualizowanego wtórnego. Nasza konfiguracja jest repliką podstawową i pojedynczą repliką dodatkową, a kroki, które wykonałem, to:
- Usuń automatyczne przełączanie awaryjne w replice wtórnej zatwierdzania synchronicznego
- Zaktualizuj instancje serwera dodatkowego do nowej wersji
- Ręczne przełączanie awaryjne na replikę dodatkową
- Sprawdź, czy bazy danych są online w nowej replice podstawowej
- Uaktualnij poprzednią replikę podstawową do nowej wersji
Aktualizacja drugorzędnego i przełączania awaryjnego, aby stał się podstawowym działał dokładnie zgodnie z oczekiwaniami. Ale po uaktualnieniu poprzedniej podstawowej repliki zauważyłem, że bazy danych na niej były wymienione w SSMS jako Nie synchronizacja / Odzyskiwanie . Również próba dostępu do nich wygenerowałaby komunikat o błędzie:
Baza danych ... jest niedostępna. (ObjectExplorer)
Sprawdzanie przez dzienniki programu SQL Server, które widziałem
Nie można otworzyć bazy danych „...” w wersji 782. Zaktualizuj bazę danych do najnowszej wersji.
Zapytanie o tabelę master..sysdatabases wykazało, że była to rzeczywiście starsza wersja i nie została zaktualizowana podczas aktualizacji:
Niestety dzienniki nie wskazywały, dlaczego nie zostały zaktualizowane, a pulpit nawigacyjny grup dostępności dał tylko ogólne ostrzeżenie wskazujące, że stan synchronizacji danych w niektórych bazach danych dostępności nie jest zdrowy bez powodu.
Próbowałem użyć TSQL do odłączenia baz danych lub przełączenia ich w tryb offline, aby „uruchomić” aktualizację, ale ponieważ są one częścią SQL AG, te polecenia nie działają.
Jak mogę zaktualizować bazę danych do najnowszej wersji, jeśli jest ona częścią SQL AG?