|
|
1
1
您是对的,增加列大小(包括最大值)将为一个大表生成一个巨大的日志,因为每一行都将被更新(在场景后面,旧列被删除,新列被添加,数据被复制)。
这样,您就可以通过在步骤2控制批处理来控制日志。您还可以通过不将整个表复制到新表中(SSMS做得很差…)来最小化对权限、约束和关系的中断。 您可以同时对两列执行此序列。 |
|
|
2
1
我建议你考虑:
这可能是一个成本低得多的操作,并且可以使用INSERT/SELECT(如果这是SQL Server 2008或更高版本)以最少的日志记录完成。 |
|
3
1
|
|
|
4
0
试着用小块做一些测试。我的意思是,你可以用几千行在本地创建相同的结构,然后看看前后的区别。我认为变化是线性的。真正的问题是重做日志,它是否适合它,因为您可以一次完成它。你必须在网上做,否则你可以暂停生产一段时间?如果您可以停止,也许有一种方法可以像在Oracle中一样停止MSSQL中的重做日志。它可以使它更快。如果需要联机,可以尝试创建一个新列,按周期将值复制到其中,例如一次复制100000行,提交,继续。完成后,删除原始列并重命名新列可能比更改更快。 |