我必须将SQL Server 2008表中的数据类型从varchar(max)更改为nvarchar(max).该表中包含数据.有没有办法在不丢失数据的情况下更改数据类型?
Pin*_*nyM 17
您可以使用标准语法来更改表:
ALTER TABLE some_table ALTER COLUMN some_column nvarchar(max)
Run Code Online (Sandbox Code Playgroud)
您可能希望重建任何索引,以确保它们按预期工作.
减少中断的另一个选择(因为我不相信ALTER COLUMN会在网上发生),是:
ALTER TABLE dbo.table ADD new_column NVARCHAR(MAX); -- metadata operation
Run Code Online (Sandbox Code Playgroud)
现在,您可以更新波形/批次/事务中的数据,而不是在一个长事务中将更改应用于整个表.当您对数据被复制感到满意时,您可以删除旧列,重命名新列,然后重新创建任何受影响的索引(您的MAX列不能在任何索引的键中,但您可能有无意中将其置于INCLUDE定义中 - 如果是这种情况,则无论如何都要提出质疑.
您仍然希望重建所有索引以回收现在未使用的空间(如果您使用的是Enterprise Edition,则可以在线进行).
| 归档时间: |
|
| 查看次数: |
33983 次 |
| 最近记录: |