我有一个具有ntext
字段的表。 MSDN表示不建议使用ntext
,并建议使用其他数据类型:
在我的特定情况下,决定切换到varbinary(max)
。我试图更改表的定义,但这没有用。
ALTER TABLE MyTable ALTER COLUMN MyColumn VARBINARY(MAX);
将类型更改为
varbinary(max)
的可能性是什么? 我尝试从ntext
-> nvarchar(max)
更改类型,然后从nvarchar(max)
-> varbinary(max)
更改类型,但这是不可能的(错误:不允许从数据类型nvarchar(max)到varbinary(max)的隐式转换)。唯一可行的解决方案是添加一个类型为
varbinary(max)
的新列,将现有值转换为新列,然后删除旧列。这花费了太多时间(在我的大约15GB的数据集上,大约需要30分钟)。这就是为什么我正在研究实现这一目标的其他可能性(可能是就地=无需移动数据和进行转换)。 最佳答案
我假设您使用varbinary(max),因为您的ntext列中包含非文本数据吗?在这种情况下,我认为您将不得不向表中添加单独的varbinary(max)列,然后运行转换操作以将ntext复制到新列。然后,删除旧列,然后将新列重命名为旧名称。
“不允许从数据类型nvarchar(max)到varbinary(max)的隐式转换”意味着必须对转换进行明确说明。