SQL Server:如何以最小的停机时间减少列宽

时间:2016-10-12 20:59:55

标签: sql-server

我有一张超过2000万行的表格。我想将列的宽度从nvarchar(100)缩小到nvarchar(50),停机时间最短。 Azure SQL premium 1 SKU需要一个小时才能使用alter table命令执行此操作。

我能想到的一个选项是创建一个新列并批量复制数据(比如说100k)。最后取一个独占锁,复制可能出现的新行,然后重命名列。

有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

将表格改为在线操作:

alter table t1 alter column c1 varchar(50) with (online=on)

答案 1 :(得分:0)

创建具有修改宽度的现有副本并执行插入选择,完成后删除旧表并将新表重命名回旧表。