it-swarm.com.de

SQL Server AlwaysOn-Datenbank bleibt nach dem Upgrade im Modus Nicht synchronisieren / im Wiederherstellungsmodus hängen. Fehler: Datenbank '...' Version 782 kann nicht geöffnet werden

Beim Testen eines Upgrades von SQL Server 2014 SP1 (12.0.4422.0) auf SQL Server 2016 CTP 3.2 (13.0.900.73) folgte ich dem empfohlener Aktualisierungsprozess und stieß auf ein Problem, bei dem die Datenbank nicht gestartet werden konnte auf der alten Primärseite nach einem Failover auf die aktualisierte Sekundärseite. Unser Setup ist ein primäres Replikat und ein einzelnes sekundäres Replikat. Die Schritte, die ich ausgeführt habe, waren:

  1. Entfernen Sie das automatische Failover auf dem sekundären Replikat mit synchronem Commit
  2. Aktualisieren Sie sekundäre Serverinstanzen auf eine neue Version
  3. Manuelles Failover auf das sekundäre Replikat
  4. Überprüfen Sie, ob die Datenbanken auf dem neuen primären Replikat online sind
  5. Aktualisieren Sie das vorherige primäre Replikat auf eine neue Version

Das Upgrade des sekundären und des Failovers zum primären System funktionierte genau wie erwartet. Nach dem Upgrade des zuvor primären Replikats stellte ich jedoch fest, dass die darauf enthaltenen Datenbanken in SSMS als Not Synchronizing/In Recovery aufgeführt waren. Auch der Versuch, auf sie zuzugreifen, würde eine Fehlermeldung erzeugen:

Die Datenbank ... ist nicht zugänglich. (ObjectExplorer)

Überprüfen Sie die SQL Server-Protokolle, die ich gesehen habe

Datenbank '...' Version 782 kann nicht geöffnet werden. Aktualisieren Sie die Datenbank auf die neueste Version.

Das Abfragen der Tabelle master..sysdatabases ergab, dass es sich tatsächlich um eine ältere Version handelt, die während des Upgrades nicht aktualisiert wurde:

(SSMS sysdatabases version

Leider wurde in den Protokollen nicht angegeben, warum es nicht aktualisiert wurde, und das Verfügbarkeitsgruppen-Dashboard gab nur eine allgemeine Warnung aus, die darauf hinweist, dass der Datensynchronisationsstatus einer Verfügbarkeitsdatenbank ohne Grund nicht fehlerfrei ist Warum.

Ich habe versucht, die Datenbanken mithilfe von TSQL zu trennen oder offline zu setzen, um sie in die Aktualisierung zu "kicken", aber da sie Teil der SQL AG sind, funktionieren diese Befehle nicht.

Wie kann ich die Datenbank auf die neueste Version aktualisieren, wenn sie Teil einer SQL AG ist?

10
Greg Bray

Nachdem ich mich eine Weile in SSMS umgesehen hatte, bemerkte ich, dass auf dem sekundären Replikat neben den Verfügbarkeitsdatenbanken ein Pausensymbol angezeigt wurde. Die primäre hatte gezeigt, dass beide "grün" waren, aber es gab eine Option auf der sekundären, um Datenbewegung fortzusetzen . Ich habe die erste Datenbank wieder aufgenommen und sofort wurde die Statusmeldung In Recovery entfernt. Eine Minute später wechselte es von Nicht synchronisieren zu Synchronisiert, und alles funktionierte wie erwartet.

Hier ist ein Screenshot der AG-Datenbanken, nachdem ich "Patch" behoben habe, aber bevor die Testdatenbank repariert wurde:

(Resume Data Movement on SQL AG

Beachten Sie, dass Sie TSQL auch auf der Sekundärseite verwenden können, um die Replikation auf mehreren Datenbanken gleichzeitig fortzusetzen:

ALTER DATABASE [Patch] SET HADR RESUME;
ALTER DATABASE [test] SET HADR RESUME;
GO
10
Greg Bray