既存のSQL NText列をnvcharmax(max)に変更しようとしていますが、サイズ制限でエラーが発生します。大量の既存のデータがあり、そのうちのいくつかは8kの制限を超えていると私は信じています。
LINQでフィールドを検索できるように、これを変換しようとしています。
私が試した2xSQLステートメントは次のとおりです。
update Table
set dataNVarChar = convert(nvarchar(max), dataNtext)
where dataNtext is not null
update Table
set dataNVarChar = cast(dataNtext as nvarchar(max))
where dataNtext is not null
そして、私が得るエラーは次のとおりです。
Cannot create a row of size 8086 which is greater than the allowable maximum row size of 8060.
これはSQLServer2008を使用しています。
助けてくれてありがとう。
以下のマークされた答えは正解であり、SQL 2008は私の状況で列を正しいデータ型に変更でき、その上で使用するLINQを利用するアプリケーションにはドラマはありません。
alter table [TBL] alter column [COL] nvarchar(max)
私はまたそれをフォローアップするようにアドバイスされました:
update [TBL] set [COL] = [COL]
これにより、データをlob構造からテーブルに移動して変換が完了し(長さが8k未満の場合)、パフォーマンスが向上し、適切に保たれます。
これは、列dataNVarCharがNVARCHAR(max)として定義されていないことが原因である可能性があります。列をNTEXTからNVARCHAR(MAX)に変換するには、これを使用します。
alter table TBL alter column COL nvarchar(max)
同時に列のデータの変換を実行します