我需要将数据库表中的列数据类型从varchar
更改为nvarchar
,以便支持中文字符(目前,包含这些字符的varchar
字段仅显示问号)。
我知道如何更改这些值,但我想看看这样做是否安全。在我换衣服之前有什么需要注意的吗?谢谢!
发布于 2011-11-17 04:06:28
请注意,此更改是数据大小更新,请参见SQL Server table columns under the hood。更改将添加一个新的NVARCHAR列,它将更新每一行,将dta从旧的VARCHAR列复制到新的NVARCHAR列,然后将旧的VARCHAR列标记为已删除。如果表很大,这将生成一个很大的日志,因此要做好准备。更新之后,运行DBCC CLEANTABLE
以回收以前的VARCHAR列使用的空间。如果您负担得起,最好运行ALTER TABLE ... REBUILD
,这不仅可以回收空间,还可以完全删除物理上删除的VARCHAR列。开头的链接文章有更多细节。
您可能还对为表启用Unicode Compression感兴趣。
发布于 2013-03-28 23:23:19
您可以对非主键字段执行以下操作:
ALTER TABLE [TableName]
ALTER COLUMN [ColumnName] nvarchar(N) null
对于主键字段,它将不起作用-您必须重新创建表
发布于 2011-11-17 03:41:48
确保长度不超过4000,因为VARCHAR的最大长度是8000,而NVARCHAR只有4K。
https://stackoverflow.com/questions/8157602
复制相似问题