将新主键插入 Table,其中已有数据

Insert New Primary Key to Table with data already inside

我 table 有数百万条记录,需要添加新的 int 字段 'Id' 作为具有自动增量的主键。现在我已经设法用合理的少量数据对 tables 进行处理,但是 table 中的一些拥有数百万条记录并抛出超时错误。数据库是 Azure SQL

'MyTable(dbo)' table
- Unable to modify table.  
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the 
server is not responding.
The statement has been terminated.

我做了一个示例代码,也许你可以参考:

CREATE TABLE dbo.doc_exz (column_a INT not null, column_b INT) ;
GO
INSERT INTO dbo.doc_exz VALUES (7,7) ;
INSERT INTO dbo.doc_exz VALUES (7,7) ;
INSERT INTO dbo.doc_exz VALUES (7,7) ;
INSERT INTO dbo.doc_exz VALUES (7,7) ;
GO

ALTER TABLE dbo.doc_exz ADD id int IDENTITY(1,1) not null 
GO

ALTER TABLE doc_exz ADD PRIMARY KEY (id)
GO        
SELECT * FROM dbo.doc_exz ;
GO

DROP TABLE dbo.doc_exz ;
GO

查询的输出:

如果您仍然收到超时错误。你可以按照@Larnu的建议:

  1. 创建 table
  2. 的新版本
  3. 将现有数据插入其中
  4. 然后删除旧的 table 并重命名新的。

大数据量可以使用BULK INSERT