現在本番アプリで使用している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が許可されます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です