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