レガシー MySQL データベースから SQL Server 2005 にデータをインポートしています。
特に私を悲しませているテーブルが1つあります。リンクサーバーとMySQL ODBCドライバーを使用してMySQLからインポートしましたが、最終的には次のようになりました。
Col Name Datatype MaxLen
OrderItem_ID bigint 8
PDM_Structure_ID int 4
LastModifiedDate datetime 8
LastModifiedUser varchar 20
CreationDate datetime 8
CreationUser varchar 20
XMLData text -1
OrderHeader_ID bigint 8
Contract_Action varchar 10
ContractItem int 4
私の主な焦点はXMLData
列です。列をクリーンアップして、XQuery を使用するために XML データ型に変換できるようにする必要があります。
そこで、テーブル オプション「行外の大きなデータ」を 1 に設定します。
EXEC sp_tableoption 'OrderItem', 'large value types out of row', 1
次に、そのフィールドに格納されている XML に変換XMLData
してクリーンアップを行います。VARCHAR(MAX)
これまでのところすべて順調です。
しかし、その列を XML データ型に変換しようとすると、次のようになります。
ALTER TABLE dbo.OrderItem
ALTER COLUMN XMLData XML
ここにこのメッセージが表示されます:
メッセージ 511、レベル 16、状態 1、行 1
サイズ 8077 の行を作成できません。行の許容最大サイズ 8060 を超えています。ステートメントは終了しました。
これはかなり驚くべきことですが、列以外の列がXMLData
約 90 バイトしかないことを見て、SQL Server にすべての「大きなデータ」を行外に格納するように具体的に指示しました....
では、一体なぜ SQL Server はその列を XML データに変換することを拒否するのでしょうか? 何か案は??想い?? アプローチで確認/変更できること??
更新:何が変わったのかわかりませんが、生データを MySQL から SQL Server にインポートする 2 回目の試みで、最終的にその NTEXT -> VARCHAR(MAX) 列を XML に変換することに成功しました.... . 奇妙な..... anyhoo - 今すぐ動作します - すべての入力と推奨事項に感謝します! 高く評価 !