3
大きなテーブルの列をNON NULLに変更する速度を上げる
最近、5億行に近いテーブルにNULL可能ビット列を追加しました。列にはデフォルトはありませんが、すべての挿入で0または1の値が指定されています。1回限りのルーチンを実行して、既存のすべての行に0または1を割り当てます(小さなバッチで行を更新します)。これで、すべての行の列に0または1が表示されます。 ビット列をnull不可にしたいのですがALTER TABLE t1 ALTER COLUMN c1 bit not null、で実行しようとしたときに3分実行され、テーブルへのすべての読み取りをブロックしていたため停止しましたが、完了するまでに時間がかかると思われました。それほど時間がかからない可能性はありますが、利用できないリスクを冒すことはできません。ロールバック自体は6分かかりました。 完了するまでに何時間もかかることなく、列をnull不可にする方法について提案はありますか? さらに、ALTER TABLE ALTER COLUMN開始してからキャンセルしたステートメントが完了するまでにかかる時間を見積もる方法はありますか? SQL Server 2017 Web Editionを使用しています。