我需要在现有表中添加一个自动编号列,该表在SQL 2005中有大约1500万条记录。
你认为需要多少时间?有什么更好的方法呢?
答案 0 :(得分:3)
为了最大限度地减少影响,我将创建一个添加了标识列的新表,通过从旧表中选择插入到新表中,然后删除旧表并重命名新表。我将在下面给出一个基本概述。处理外键等可能需要额外的步骤。
create table NewTable (
NewID int identity(1,1),
Column1 ...
)
go
insert into NewTable
(Column1, ...)
select Column1, ...
from OldTable
go
drop table OldTable
go
exec sp_rename 'NewTable', 'OldTable'
go
答案 1 :(得分:2)
很难说需要多长时间。
在我看来,您最好的选择是带回生产数据库的副本,在开发环境中恢复它,并在那里应用您的更改以查看需要多长时间。
从那里,您可以协调网站停机时间,或安排更新在用户未连接时运行。
答案 2 :(得分:2)
除非是紧急情况:
要了解您需要多少停机时间,请执行还原到新数据库并在那里进行更改。
它不应该很长:它不仅取决于行数,还取决于每行中有多少数据。 (SQL Server将整个表复制过来。)
答案 3 :(得分:0)
您是否可以选择备份生产数据库,在其他服务器上应用更改并更改连接字符串?您甚至可以在与原始服务器相同的服务器上恢复它,更改连接字符串并删除旧数据库。
如果磁盘空间有限,则可能无法实现。