为了支持中文字符,我需要将数据库表中的列数据类型从
我知道如何更改值,但我想知道在进行更改之前是否安全。在执行更改之前有什么需要注意的地方吗?谢谢!
varchar
更改为nvarchar
(目前,具有这些字符的varchar
字段仅显示问号)。我知道如何更改值,但我想知道在进行更改之前是否安全。在执行更改之前有什么需要注意的地方吗?谢谢!
varchar
更改为nvarchar
(目前,具有这些字符的varchar
字段仅显示问号)。DBCC CLEANTABLE
以回收以前使用的VARCHAR列所占用的空间。如果经济允许,最好运行 ALTER TABLE ... REBUILD
,这不仅可以回收空间,还可以完全删除已删除的物理VARCHAR列。链接文章开头有更多详细信息。您可以在非主键字段上执行:
ALTER TABLE [TableName]
ALTER COLUMN [ColumnName] nvarchar(N) null
在主键字段上它不起作用 - 您将需要重新创建表
请确保长度不超过4000,因为VARCHAR的最大值是8000,而NVARCHAR只有4K。
检查此表的所有依赖项,如存储过程、函数、基于此表的临时表以及用于插入/更新的变量等,可能还需要更新为NVARCHAR。同时检查表是否在复制中!这可能会给您带来一系列新问题!
存储过程/视图/查询需要修改以处理nvarchar数据。
ALTER TABLE TableName ALTER COLUMN ColumnName nvarchar(250) not null
DBCC CLEANTABLE (DatabaseName, 'TableName', 100000)
ALTER TABLE TableName REBUILD