ライブprodテーブルのvarcharの長さを変更する


25

現在、実稼働アプリで使用されているMS SQL Server 2008 R2 DBサーバーがあります。

アプリの新しい拡張機能varchar(100)では、テーブルの列の長さを増やす必要があります。

現在のデータに影響を与えずに、prod DBのこの既存の列の長さを増やすことはできますか?

サービスの中断を避けるために、この変更は営業時間外に完了する必要がありますか?

回答:


42

varchar(100 - 8000)(つまり以外varchar(max))に増やして、SSMS GUIではなくTSQLでこれを行う場合

ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL

カラムのnull許容をNULLto NOT NULL(すべての行が検証され、潜在的にに書き込まれている間にテーブルをロックする)またはfromから NOT NULLto NULL 変更しない場合、これはメタデータのみの迅速な変更です。SCH-Mテーブルのロックを待つ必要があるかもしれませんが、取得すると、変更はほとんど瞬時に行われます。

注意すべき1つの注意点は、SCH-Mロックの待機中に、キューを先にジャンプするのではなく、他のクエリブロックれるため、SET LOCK_TIMEOUT最初のクエリの追加を検討することです。

また、元の列の状態であるかどうかALTER TABLEを明示的に指定するステートメントで確認してください。NOT NULLそうでない場合、列は許可されるように変更されますNULL


簡単な答えをありがとう、ただチェックしていました。それはほとんど瞬時でした。
anataliocs
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.