データベースミラーリングでプライマリデータベースの互換モードを変更すると、ミラーデータベースも変更されると信じていました。
しかし、それは間違っていることがわかりました。プライマリでsys.databases
を使用してクエリしましたが、互換モードを120に変更しましたが、ミラーリングされたデータベースの互換性レベルは100のままでした。なぜですか?
ここでsys.databasesに間違ったfnを使用していますか?
また、それが意味を変えない場合、反映するためにフェイルオーバー/フェイルバックを行う必要がありますか?
この変更を反映する必要がある場所で、読み取り専用のログ配布セカンダリデータベースがあった場合はどうなりますか?ログ配布を再構築する必要がありますか?
ありがとう
ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = { 150 | 140 | 130 | 120 | 110 | 100 | 90 }
(ログブロック対トランザクション -(ログ配布では、ログバックアップを取り、セカンダリサーバーに配布して復元するため)なので、DBミラーリングまたはAlwaysONのセカンダリには反映されません。
SQLサーバーの特定のバージョンとDB互換性レベルに基づいてアプリケーションを認定するときに、DB互換性レベルを変更すべきではない理由があります。
これは、データベースの所有者を変更する場合と同じです。プライマリになったら、セカンダリで変更する必要があります。
可能であれば、LSを中断したりミラーリングしたりせずに、これを実際に変更するにはどうすればよいですか。
ミラーリングやLSを解除する必要はありません。フェイルオーバーとフェイルバックのみを行う必要があります。
ログ配布の場合、これは物理ログのバックアップ-コピー-復元であるため、データベースを復元してオンラインまたは読み取り専用にすると、変更が反映されます。ミラーリングの場合、フェイルオーバーとフェイルバックのみを実行できます。
ポイントは、データベースを読み取り/書き込み状態にし、AGまたはミラーリング構成でデータベースを変更することです。