2012-05-15 91 views

回答

17

您可以用标准的语法修改表:

ALTER TABLE some_table ALTER COLUMN some_column nvarchar(max) 

你可能会想然而,重建任何索引,以确保它们正常工作。

2

总是做一个备份,所以无论发生什么事情,你都可以回到事情的方式。

这样说从varchar(max)改为nvarchar(max)不应该丢失数据。

旁注:你可能有顾虑,如果你是在另一个方向nvarchar(max)更改为varchar(max)的进程必须扩展字符,如果任何人出席转换。

7

另一种选择,以尽量减少破坏(因为我不相信ALTER COLUMN将在网上进行),是:

ALTER TABLE dbo.table ADD new_column NVARCHAR(MAX); -- metadata operation 

现在,您可以更新波/批次/交易数据,而不是应用的变化整个表在一次长交易中。如果您确信数据已被复制,您可以删除旧列,重命名新列,然后重新创建任何受影响的索引(您的MAX列不能位于任何索引的键中,但可能有无意中将其放入INCLUDE定义中 - 如果是这种情况,您应该反问)。

您仍然希望重建所有索引以回收现在未使用的空间(如果您使用企业版,您可以在线执行此操作)。

+0

非常好的点+1 – RThomas

相关问题