ダウンタイムなしで「変更」を行う方法についての一般的な答えはありません。答えは、正確に何が変更されたかに基づいて、実際にはケースごとに異なります。一部の変更はダウンタイムに影響を与えません(たとえば、新しいテーブルの追加)、一部の変更は最小限の影響しかありません(たとえば、nullビットマップサイズを増加させない新しいnull可能列のように、データサイズを変更せずに既存のテーブルに列を追加します)。他の変更はダウンタイムに大混乱をもたらします(データサイズを変更する操作は、強制的にインデックスを再構築し、その間テーブルをロックします)。一部の変更は、*重大な*ダウンタイムなしでは適用できません。変更が並行して適用された場合を知っています。データベースのコピーが作成され、レプリケーションが設定されて最新の状態に保たれ、コピーが変更されて同期が保たれます。最後に、操作はマスターデータベースになる変更されたコピーに移動されます。でプレゼンテーションがありますミシェル・ウッフォードによって与えられたPASS 2009は、godaddyが数週間続いたそのような変化をどのように経験したかについて言及しています。
ただし、小規模では、十分にテストされたスクリプトを使用して変更を適用し、テスト評価への影響を測定する必要があります。
しかし、本当の問題は、これがスキーマに加える最後の変更になるのかということです。最後に、アプリケーションに最適なスキーマを発見しました。本番データベースは変更されませんか?おめでとうございます、これをやってのけると、あなたは休むことができます。しかし現実的には、6か月でまったく同じ問題に直面することになります。本当の問題は、開発者がSSMSまたはVSServerExploredからデータベースに直接変更を加える開発プロセスです。開発プロセスでは、バージョン管理とデータベースで説明されているような、バージョン管理とT-SQLスクリプトに基づくスキーマ変更戦略を採用するように意識的に努力する必要があります。