我想重命名表中的列。我看到两种方法在不停机的情况下重命名现有列
使用
sp_rename()
并修改存储过程来引用新名称。创建新列,从旧的列数据复制到新列,修改存储过程等来引用新列,最终删除旧列。
我们不能使用#1,因为重命名列可能会导致存储过程中断,我们无法承受任何停机时间。
如果我们用#2去,有可能性,即新老列将用于将数据从旧的复制到新列,但部署到使用新的列存储过程之前一段时间后共存。
是否有任何方法让新列与旧列的更新/插入/删除保持同步?
AFTER
触发器可以帮助吗?但触发器通常会增加交易时间,因此可能不是一个有利的解决方案。- 我可以在同一个表的两列之间复制数据吗?
- 任何其他可能的解决方案?
sp_rename()还干净地更新所有对列的引用 - 比如存储过程,函数,索引等吗?
sp_rename()是否干净地更新对列的所有引用? - 似乎不是,[在MS SQL Server 2005中重命名列](http://stackoverflow.com/questions/1255903/renaming-a-column-in-ms-sql-server-2005) – HappyTown
不,sp_rename不更改引用列的任何对象 - 但安装过程只需要几秒钟。我真的不知道如何更快地做到这一点......并且如果你不能那么做,你如何维护你的数据库? –
可能有任何应用程序受到影响?任何动态SQL浮动? – HABO