これが私がすることです。ダウンタイムはゼロにはなりませんが、1秒以内に終了する可能性があります。
実際のデータベースへのインターフェース要素のみを持つデータベースを作成します。私の場合、ビュー定義のみが含まれ、すべてのユーザークエリはこのデータベースを通過します。
毎晩新しいデータベースを作成します。完了したら、新しいデータベースを参照するようにビュー定義を更新します。ビューを更新している間はビューを含むデータベースへのユーザーアクセスをオフにするか、すべてのビューを削除して再作成することをお勧めします。これにより、古いデータベースへの部分的なアクセスが防止されます。ビューの作成は高速であるため、これは非常に高速な操作である必要があります。
私たちは仕事を通じてこれらすべてを行います。実際、本番ビューを変更する前に、別のデータベースでビューの作成をテストして、すべてが機能していることを確認します。
もちろん、alter view
を使用する場合 すべてのビューで一貫性を要求する代わりに、ダウンタイムは発生せず、短時間の不整合が発生します。