繁体   English   中英

向具有超过1500万条记录的SQL列中添加自动编号

[英]Adding an autonumber to a SQLcolumn which has more than 15 million records

我需要在现有表中添加一个自动编号列,该表在SQL 2005中大约有1500万条记录。

您认为这需要多少时间? 有什么更好的方法呢?

为了最大程度地减少影响,我将创建一个新表,其中添加了identity列,通过从旧表中进行选择将其插入新表,然后删除旧表并重命名新表。 我将在下面给出基本概述。 可能需要额外的步骤来处理外键等。

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. 不要更改实时数据库。

要找出所需的停机时间,请还原到新的数据库并在那里进行更改。

不应太长:它不仅取决于行数,而且还取决于每行中有多少数据。 (SQL Server将复制整个表。)

您是否可以选择备份生产数据库,将更改应用到另一台服务器上以及更改连接字符串? 您甚至可以将它与原始服务器还原在同一服务器上,更改连接字符串并摆脱旧数据库。

如果磁盘空间有限,可能不可行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM