将新主键插入 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的建议:
- 创建 table
的新版本
- 将现有数据插入其中
- 然后删除旧的 table 并重命名新的。
大数据量可以使用BULK INSERT。
我 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的建议:
- 创建 table 的新版本
- 将现有数据插入其中
- 然后删除旧的 table 并重命名新的。
大数据量可以使用BULK INSERT。