我有一个具有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)的隐式转换”意味着必须对转换进行明确说明。

09-11 17:39
查看更多