web-dev-qa-db-ja.com

互換モードの変更がセカンダリに反映されない

データベースミラーリングでプライマリデータベースの互換モードを変更すると、ミラーデータベースも変更されると信じていました。

しかし、それは間違っていることがわかりました。プライマリでsys.databasesを使用してクエリしましたが、互換モードを120に変更しましたが、ミラーリングされたデータベースの互換性レベルは100のままでした。なぜですか?

ここでsys.databasesに間違ったfnを使用していますか?

また、それが意味を変えない場合、反映するためにフェイルオーバー/フェイルバックを行う必要がありますか?

この変更を反映する必要がある場所で、読み取り専用のログ配布セカンダリデータベースがあった場合はどうなりますか?ログ配布を再構築する必要がありますか?

ありがとう

4
BeginnerDBA

ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = { 150 | 140 | 130 | 120 | 110 | 100 | 90 }

(ログブロック対トランザクション -(ログ配布では、ログバックアップを取り、セカンダリサーバーに配布して復元するため)なので、DBミラーリングまたはAlwaysONのセカンダリには反映されません。

SQLサーバーの特定のバージョンとDB互換性レベルに基づいてアプリケーションを認定するときに、DB互換性レベルを変更すべきではない理由があります。

これは、データベースの所有者を変更する場合と同じです。プライマリになったら、セカンダリで変更する必要があります。

可能であれば、LSを中断したりミラーリングしたりせずに、これを実際に変更するにはどうすればよいですか。

ミラーリングやLSを解除する必要はありません。フェイルオーバーとフェイルバックのみを行う必要があります。

ログ配布の場合、これは物理ログのバックアップ-コピー-復元であるため、データベースを復元してオンラインまたは読み取り専用にすると、変更が反映されます。ミラーリングの場合、フェイルオーバーとフェイルバックのみを実行できます。

ポイントは、データベースを読み取り/書き込み状態にし、AGまたはミラーリング構成でデータベースを変更することです。

8
Kin Shah