我从varchar(最大)在SQL Server 2008中的表更改数据类型为nvarchar(最大)。 此表中有数据。 有没有办法来改变数据类型,而不会丢失数据?
Answer 1:
你可以用标准的语法修改表:
ALTER TABLE some_table ALTER COLUMN some_column nvarchar(max)
你可能会想然而,重建任何索引,以确保它们正常工作。
Answer 2:
另一种选择,以尽量减少破坏(因为我不相信ALTER COLUMN
将在网上发生),方法是:
ALTER TABLE dbo.table ADD new_column NVARCHAR(MAX); -- metadata operation
现在,您可以更新波/批次/交易而不是一个长期的交易将改变整个表中的数据。 当你确信该数据被复制,您可以删除旧的列,重命名新的,重新创建任何受影响的索引(您的MAX列不能在任何指数的关键,但你可能有无意中把它变成一个INCLUDE定义 - 如果是这样的话,你应该质疑反正)。
你仍然要重建所有索引收回现在未使用的空间(你可以,如果你正在使用企业版在网上做)。
Answer 3:
务必进行备份,以便无论你可以去会发生什么回事情的方式。
随着中说更改varchar(max)
到nvarchar(max)
应该不会丢失数据。
旁注:你可能有顾虑,如果你是在另一个方向改变nvarchar(max)
到varchar(max)
的进程必须转换扩展字符,如果任何人出席。
文章来源: Changing a data column from varchar(max) to nvarchar(max) in SQL Server 2008
标签:
sql-server-2008