テーブルを削除して再作成することなくvarchar(255)
、SQL Server 2008 データベースの列の型を から に変更することはできますか?varchar(MAX)
SQL Server Management Studio は、それを使用して実行しようとするたびにエラーをスローしますが、頭痛の種を避けるために、DROP と CREATE を使用せずに型を変更できるかどうかを知っておくとよいでしょう。
ありがとう
TSQL を使用して実行できるはずです。
何かのようなもの
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
「変更の保存は許可されていません。行った変更により、次のテーブルを削除して再作成する必要があります。再作成できないテーブルに変更を加えたか、[テーブルの再作成が必要な変更を保存しない] オプションを有効にしました。オプション「変更の保存を禁止する」が有効になっていません..
これは、既定で有効になっている SQL Server Management Studio 2008 の新しい "機能" です。大きな変更を加えるたびに、SSMS は、新しいテーブルを作成してから古いテーブルからデータを移動することによってのみ、テーブルを再作成できます。すべてバックグラウンドで行われます (これらの変更には、特に列の並べ替えが含まれます)。
テーブルに FK 制約などがある場合、この方法でテーブルをやり直すと失敗する可能性があるため、このオプションはデフォルトでオフになっています。しかし、あなたは間違いなくその機能をオンにすることができます!
それは下にTools > Options
あり、そのオプションをオフにすると、テーブル デザイナーでテーブル構造にこれらの種類の変更を再度行うことができます。
次のようなことに注意してください
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
https://dba.stackexchange.com/questions/15007/change-length-of-varchar-on-live-prod-table
マーティン・スミスの回答:
それを増やしている場合varchar(100 - 8000)
(つまりvarchar(max))
、SSMS GUIではなくTSQLを介してこれを行っている以外のもの)
ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL列の null 可能性を to から変更しない
NULL
(NOT NULL
これにより、すべての行が検証され、場合によっては to または NOT NULL
toNULL
に書き込まれる可能性がある間、テーブルがロックされます。これは、メタデータのみの迅速な変更です。テーブルのロックを待つ必要があるかもしれませんがSCH-M
、一度注意すべき点の 1 つは、SCH-M
ロックを待機している間は、キューを先行してジャンプするのではなく、他のクエリがブロックされることですSET LOCK_TIMEOUT
。それが元の列の状態であるかどうかALTER TABLE
を明示的に指定するステートメントで確認してください。それ以外の場合、列は allow に変更されます。NOT NULL
NULL