2016-12-07 4 views
0

現在、SQLデータベースにはnvarchar(255)というカラム値があります。これをnvarchar(600) SQLビジュアルスタジオをサーバー上に表示すると、警告がポップアップし、変更を行うためにテーブルを削除して再構築する必要があることが示されます。 I 最初にプログラムを作成した開発者のアドバイスでこれを行う必要があります。 (彼はこの時点で私のために変更を加えることができません)。テーブルの削除と再構築を行わずに、SQLデータベースのnvarcharの最大値を変更します。

設定で[変更を保存するのを防ぐ...]チェックボックスをオフにすることをアドバイスする多くの回答がありましたが、このサイトや他の多くのアドバイスには消極的です。

テーブルを削除して再構築しなくても、この最大値を変更する方法はありますか?

簡単なALTERのステートメントは動作しますか?このフィールドはNULL値を許可しません。

ALTER TABLE dbo.myTable 
ALTER COLUMN myColumn VARCHAR(600) 
+1

追加文の末尾に 'NOT NULL'オプション。 F5。 –

+0

@IvanStarostin Msg 5074、レベル16、状態1、行1 オブジェクト 'DF_myTable_myColumn'は、列 'myColumn'に依存します。 メッセージレベル4922、レベル16、状態9、行1 ALTER TABLE ALTER COLUMN 1つ以上のオブジェクトがこの列にアクセスしたため、myColumnが失敗しました。 - 私は実際の声明btwの名前を置き換えました。 – LewisJWright

+0

以前の開発者は「テーブルタイプを変更する必要があります」と述べましたか? :S – LewisJWright

答えて

0
SET XACT_ABORT ON 

BEGIN TRAN 

ALTER TABLE dbo.myTable 
DROP CONSTRAINT DF_myTable_myColumn 

ALTER TABLE dbo.myTable 
ALTER COLUMN myColumn VARCHAR(600) NOT NULL 

ALTER TABLE dbo.myTable 
ADD CONSTRAINT DF_myTable_myColumn DEFAULT('foo') FOR myColumn 

COMMIT TRAN 
関連する問題