XML
私たちのデータベースには、データ型の列を持つテーブルがあります。列は必須 ( not null
) でしたが、非必須 ( ) にする必要がありましたnull
。次のようなスクリプトを作成しました。
alter table [SomeSchema].[SomeTable] alter column [SomeColumn] XML null
ロールバック スクリプトを作成/テストする必要があったため、次のようなスクリプトを作成しました。
alter table [SomeSchema].[SomeTable] alter column [SomeColumn] XML not null
最初のステートメントは正しく実行されました。ロールバックをテスト/実行しようとすると、次のエラーが発生しました。
メッセージ 511、レベル 16、状態 1、行 1
サイズ 8082 の行を作成できません。行の許容最大サイズ 8060 を超えています。ステートメントは終了しました。
この問題は、おそらく XML 型には適用されないはずの行オーバーフローに関連しているようです (ただし、この状況では適用されるようです)。この問題は、特定のレコードがテーブルにある (つまり、データの影響を受ける) 場合にのみ発生しますが、データのサイズに直接相関しているようには見えません。たとえば、あるレコードの XML の長さは 10,473 文字で、この問題が発生しました。別のレコードの XML の長さは 159,072 文字で、問題は発生しませんでした。
設定:
- Windows XP SP3
- SQL Server 2008 R2