比較的少数のテーブルを持つ SQL Server 2008 R2 データベースを持つ .Net アプリケーションを作成しましたが、一部のテーブルには約 100,000,000 レコードが存在する可能性があります。SELECT のパフォーマンスを向上させるために、必要なインデックスを作成しましたが、うまく機能します。しかし、誰もが知っているように、断片化されたインデックスは再構築する必要があります。
お客様の PC の 1 台と Winforms アプリケーションに SQL Server 2008 R2 Express をインストールしました。さらに 3 台の PC が通常の LAN 経由でこのデータベースに接続されていますが、すべて問題ないようです。
さて、問題は、たとえば、ユーザーがいずれかのマシンで私のプログラムの使用を開始するたびに、インデックスを再構築したいということです。いくつかの ALTER INDEX を実行することはできますが、MS ドキュメントに記載されているように、オフライン インデックス作成は、インデックス作成期間中テーブルをロックします。つまり、ユーザーがプログラムを開始すると、他のユーザーはテーブルにアクセスできなくなります! ONLINE オプションがあることは知っていますが、SQL Server の Express エディションでは機能しません。
実サーバーが常時稼働している他の環境では、一晩かけてインデックスを再構築するエージェント ジョブを作成します。
どうすればこの問題を解決できますか?