我有一个包含数百万条记录的表,需要添加新的 int 字段“Id”作为自动增量的主键。现在我已经设法对具有合理少量数据的表进行处理,但某些表保存了数百万条记录并抛出超时错误。数据库是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的建议:
对于大量数据,可以使用BULK INSERT。