web-dev-qa-db-ja.com

Varchar(255)からVarchar(MAX)

テーブルを削除して再作成することなく、SQL Server 2008データベースの列タイプをvarchar(255)からvarchar(MAX)に変更できますか?

SQL Server Management Studioは、それを使用しようとするたびにエラーをスローしますが、DROPとCREATEを行わずにタイプを変更できるかどうかを知るのは頭痛の種です。

ありがとう

45
Darbio

TSQLを使用して実行できるはずです。

何かのようなもの

ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
76
Adriaan Stander

'変更の保存は許可されていません。行った変更では、次のテーブルを削除して再作成する必要があります。再作成できないテーブルに変更を加えたか、[テーブルの再作成が必要な変更の保存を禁止する]オプションを有効にしました。オプション「変更を保存しない」は有効になっていません。

これは、SQL Server Management Studio 2008の新しい「機能」であり、デフォルトで有効になっています。大きな変更を加えるときはいつでも、SSMSは新しいテーブルを作成してから、古いテーブルのデータをすべてバックグラウンドで移動することによってのみテーブルを再作成できます(これらの変更には、列の並べ替えなどが含まれます)。

テーブルにFK制約などがある場合、この方法でテーブルを再実行すると失敗する可能性があるため、このオプションはデフォルトでオフになっています。しかし、あなたは間違いなくその機能をオンにすることができます!

alt text

Tools > Optionsの下にあり、このオプションをオフにすると、テーブルデザイナでテーブル構造にこのような変更を再度行うことができます。

13
marc_s