4

列を持つ既存のテーブルがありBINARY(8000)ます。私はこのようなことをしようとしました:

ALTER TABLE [Member] 
  ALTER COLUMN [PublicCertificate] VARBINARY(MAX)

そして私はこれを得る:

メッセージ 511、レベル 16、状態 1、行 1
サイズ 8086 の行を作成できません。行の許容最大サイズ 8060 を超えています。ステートメントは終了しました。

BINARY(8000)常に 8000 の長さを返し、+ 他の 3 列は>= 8086. これを行う方法はありALTER COLUMNますか?テーブルを削除して最初からやり直す以外の方法はありますか? それは機能しますが、私の意見ではエレガントなソリューションではありません。

4

2 に答える 2

1

あなたの最善の策は、新しい列を作成し、1 つの大きなupdateステートメントで値をコピーしてから、元の列を削除して新しい列の名前を変更することだと思います。

テーブルが十分に小さい場合は、非常に高速に発生し、何も中断しないはずです。ただし、大量の行がある場合は、短いダウンタイムをスケジュールする価値があるかもしれません。

于 2013-07-29T17:27:18.343 に答える