2011-11-16 129 views

回答

26

请注意,此更改是数据大小更新,请参阅SQL Server table columns under the hood。该更改将添加一个新的NVARCHAR列,它将更新将每个行从旧VARCHAR复制到新NVARCHAR列的每行,然后将旧VARCHAR列标记为已删除。如果表格很大,这会产生一个大日志,所以要做好准备。更新后,运行DBCC CLEANTABLE以回收前一个VARCHAR列使用的空间。如果你能负担得起,最好运行ALTER TABLE ... REBUILD,它不仅会回收空间,还会完全删除物理删除的VARCHAR列。在开始的链接文章有更多的细节。

您可能也有兴趣为您的桌子启用Unicode Compression

7

请确保长度不超过4000,因为VARCHAR的最大值为8000,而NVARCHAR仅为4K。

2

表格会变大。列中的每个字符都将占用两倍的空间来存储。除非桌子真的很大,否则你可能不会注意到。

使用列数据的存储过程/视图/查询可能需要修改以处理nvarchar。

17

您可以在非主键字段做:

ALTER TABLE [TableName] 
ALTER COLUMN [ColumnName] nvarchar(N) null 

它的服务将无法正常工作的主键字段 - 你将不得不重新创建表

1

检查所有依赖此表作为存储procs,函数,基于此表的临时表以及用于插入/更新等的变量等也可能需要更新到NVARCHAR。 还检查表是否在复制!这可能会导致一系列新问题!

相关问题