我正在将数据从旧版 MySQL 数据库导入 SQL Server 2005。
我有一张特别让我伤心的桌子。我已经使用链接服务器和 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
列 - 我需要清理它并制作它,以便我可以将它转换为 XML 数据类型以在其上使用 XQuery。
所以我将表选项“大数据行外”设置为1:
EXEC sp_tableoption 'OrderItem', 'large value types out of row', 1
然后我继续转换XMLData
并VARCHAR(MAX)
清理存储在该字段中的 XML。到目前为止一切都很好。
但是当我现在尝试将该列转换为 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 时,我最终成功地将 NTEXT -> VARCHAR(MAX) 列转换为 XML ...... . 奇怪..... anyhoo - 现在可以使用 - 感谢大家的所有意见和建议!高度赞赏!