SQL Serverでの列サイズの変更


回答:


506
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL

6
非常に大きなデータテーブルの列を変更する場合は注意してください。(とにかく私の環境で)クラッシュを引き起こす可能性があります。
DavidTheDev 2015年

55
列が属性NOT NULLを持つ場合、クエリで言及する必要があることも重要NULLです。それ以外の場合は、デフォルトで設定されます。 ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Suvendu Shekhar Giri 2015

8
あなたがその列に索引がある場合は、それをドロップする必要があります、その後、ALTER TABLEのコードを実行し、再度インデックスを作成
Sr.PEDRO



19

ALTER COLUMN属性NOT NULLを指定せずに実行すると、列がnull可能でない場合はnullに変更されます。したがって、最初に列がNULL可能かどうかを確認し、そうでない場合はattributeを指定する必要がありますNOT NULL。または、次のステートメントを使用して、列のnull可能性を事前にチェックし、正しい属性でコマンドを実行することもできます。

IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ELSE        
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NULL

6

次の図に示すように、テーブルを選択します->設計->データ型の値を変更します。

ここに画像の説明を入力してください

テーブルのデザインを保存します。


適切にチェックして、いくつかのステップが欠落している可能性があります。
arnav 2017

7
ツール->オプション... />デザイナー->テーブルおよびデータベースデザイナー-「テーブルの再作成を必要とする変更の保存を
禁止

ほとんどの場合、私はスクリプトを好む。しかし、列の変更については、UIが好きです。NOT NULL、計算、または追加の列プロパティを確認することを覚えておく必要はありません。[保存]をクリックするだけです(SSMSで@ 7annerのメモとして設定を変更した後)。
Jacob H

1

興味深いアプローチはここにあります:ダウンタイムなしでカラムを拡大する方法by spaghettidba

この列を「ALTER TABLE」コマンドで拡大しようとすると、SQLServerがすべての行を通過して新しいデータ型を書き込むのを待つ必要があります。

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

この不便さを克服するために、あなたのテーブルが取ることができる魔法の列拡大薬があり、それは行圧縮と呼ばれています。(...)行圧縮を使用すると、固定サイズの列は、実際のデータが適合する最小のデータ型で必要なスペースのみを使用できます。

テーブルがROWレベルで圧縮されると、ALTER TABLE ALTER COLUMNメタデータのみの操作になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.