web-dev-qa-db-ja.com

アップグレード後、SQL Server AlwaysOnデータベースが同期しないモードまたはリカバリモードでスタックする。エラー:データベース '...'バージョン782を開けません

SQL Server 2014 SP1(12.0.4422.0)からSQL Server 2016 CTP 3.2(13.0.900.73)へのアップグレードをテストしているときに、 推奨される更新プロセス に従っていて、データベースが起動しないという問題が発生しました更新されたセカンダリにフェイルオーバーした後の古いプライマリ。私たちの設定はプライマリレプリカと単一のセカンダリレプリカであり、私が完了した手順は次のとおりです。

  1. 同期コミットセカンダリレプリカの自動フェイルオーバーを削除する
  2. セカンダリサーバーインスタンスを新しいバージョンにアップグレードする
  3. セカンダリレプリカに手動でフェイルオーバーする
  4. 新しいプライマリレプリカでデータベースがオンラインであることを確認する
  5. 以前のプライマリレプリカを新しいバージョンにアップグレードする

セカンダリのアップグレードとそれをプライマリにするフェイルオーバーは、期待どおりに機能しました。しかし、以前のプライマリレプリカをアップグレードした後、その上のデータベースがSSMSでNot Synchronizing/In Recoveryとしてリストされていることに気付きました。また、それらにアクセスしようとすると、エラーメッセージが生成されます。

データベース...にアクセスできません。 (ObjectExplorer)

確認したSQL Serverログを使用して確認する

データベース '...'バージョン782を開けません。データベースを最新バージョンにアップグレードしてください。

Master..sysdatabasesテーブルをクエリすると、テーブルが確かに古いバージョンであり、アップグレード中に更新されていないことがわかりました。

SSMS sysdatabases version

残念ながら、ログは更新されなかった理由を示しておらず、可用性グループダッシュボードは、一部の可用性データベースのデータ同期状態が正常でないことを示す一般的な警告のみを出しましたなぜ。

TSQLを使用してデータベースをデタッチするか、オフラインに設定して更新に「キック」しましたが、SQL AGの一部であるため、これらのコマンドは機能しません。

SQL AGの一部であるデータベースを最新バージョンにアップグレードするにはどうすればよいですか?

10
Greg Bray

しばらくSSMSを試してみたところ、セカンダリレプリカの可用性データベースの横に一時停止アイコンがあることに気付きました。プライマリーは両方とも「緑色」であると示していましたが、セカンダリーにはResume Data Movementのオプションがありました。最初のデータベースを再開したところ、すぐにIn Recoveryステータスメッセージが削除されました。 1分後、「同期しない」から「同期済み」に変わり、すべてが期待どおりに機能しました。

以下は、「パッチ」を修正した後、テストデータベースを修正する前のAGデータベースのスクリーンショットです。

Resume Data Movement on SQL AG

セカンダリでTSQLを使用して、同時に複数のデータベースでレプリケーションを再開することもできます。

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