現在本番アプリで使用しているMSSQL Server 2008 R2DBサーバーがあります。
アプリの新しい拡張機能では、テーブルのvarchar(100)
列の長さを増やす必要があります。
この長さは可能ですか製品DBの既存の列は、現在のデータに影響を与えることなく増加しますか?
サービスの中断を避けるために、この変更は営業時間外に完了する必要がありますか?
回答
それをvarchar(100 - 8000)
(つまり、varchar(max)
以外)に増やし、SSMSGUIではなくTSQLを介してこれを行っている場合
ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL
列のnull可能性をNULL
からNOT NULL
に変更しない(これにより、すべての行が検証されている間(、場合によっては)、またはNOT NULL
からNULL
状況によっては、これはメタデータのみの簡単な変更です。テーブルのSCH-M
ロックを待つ必要があるかもしれませんが、変更がほぼ瞬時に行われることが確認されると、注意が必要です。
SCH-M
ロックの待機中に、他のクエリが ブロックされるのではなく、キューを先にジャンプするので、
SET LOCK_TIMEOUT
最初。
また、ALTER TABLE
元の列の状態である場合はNOT NULL
を明示的に指定するステートメント。そうでない場合は、列が変更されてNULL
が許可されます。