我有一张超过2000万行的表格。我想将列的宽度从nvarchar(100)
缩小到nvarchar(50)
,停机时间最短。 Azure SQL premium 1 SKU需要一个小时才能使用alter table命令执行此操作。
我能想到的一个选项是创建一个新列并批量复制数据(比如说100k)。最后取一个独占锁,复制可能出现的新行,然后重命名列。
有更好的方法吗?
答案 0 :(得分:3)
将表格改为在线操作:
alter table t1 alter column c1 varchar(50) with (online=on)
答案 1 :(得分:0)
创建具有修改宽度的现有副本并执行插入选择,完成后删除旧表并将新表重命名回旧表。