17

既存の SQL NText列をnvcharmax(max)に変更しようとしていますが、サイズ制限でエラーが発生しました。既存のデータは大量にあり、そのうちのいくつかは 8k の制限を超えていると思います。

これを変換して、LINQ でフィールドを検索できるようにします。

私が試した2つのSQLステートメントは次のとおりです。

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.

これは SQL Server 2008 を使用しています。

助けていただければ幸いです、ありがとう。


更新/解決策:

以下のマークされた回答は正しいです。SQL 2008 は、私の状況では列を正しいデータ型に変更できます。その上で使用する LINQ を利用するアプリケーションにはドラマはありません。

alter table [TBL] alter column [COL] nvarchar(max)

また、次のようにフォローアップするようにアドバイスされました。

update [TBL] set [COL] = [COL]

データを LOB 構造からテーブルに移動することで変換が完了し (長さが 8k 未満の場合)、パフォーマンスが向上し、適切な状態が維持されます。

4

1 に答える 1

19

これはおそらく、列 dataNVarChar が NVARCHAR(max) として定義されていないためです。列を NTEXT から NVARCHAR(MAX) に変換するには、これを使用します。

alter table TBL alter column COL nvarchar(max)

同時に列内のデータの変換を実行します

于 2011-01-16T22:20:54.287 に答える