sql-server - 仅当使用列列表且 IDENTITY_INSERT 为 ON SQL Server 时,才能指定表中标识列的显式值

标签 sql-server

我正在尝试执行此查询

INSERT INTO dbo.tbl_A_archive
  SELECT *
  FROM SERVER0031.DB.dbo.tbl_A

但即使在我运行之后

set identity_insert dbo.tbl_A_archive on

我收到此错误消息

An explicit value for the identity column in table 'dbo.tbl_A_archive' can only be specified when a column list is used and IDENTITY_INSERT is ON.

tbl_A 是一个行数和宽度都很大的表格,即它有很多列。我不想手动输入所有列。我怎样才能让它发挥作用?

最佳答案

SET IDENTITY_INSERT tableA ON

您必须为 INSERT 语句创建一个列列表:

INSERT Into tableA ([id], [c2], [c3], [c4], [c5] ) 
SELECT [id], [c2], [c3], [c4], [c5] FROM tableB

不像“INSERT Into tableA SELECT ........”

SET IDENTITY_INSERT tableA OFF

关于sql-server - 仅当使用列列表且 IDENTITY_INSERT 为 ON SQL Server 时,才能指定表中标识列的显式值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2005437/

相关文章:

sql-server - 哪种连接语法更好?

sql-server - 创建复制错误 : You cannot create a publication from server 'X' because the server is too old

sql-server - SQL Server 是否支持内存数据库?

c# - SqlBulkCopy - 将行以及附加值添加到数据库中

sql - 在没有检查约束的情况下更改列长度

sql-server - Sql Server 差异备份的大小不同

sql-server - 如何删除存储在 SQL Server 列中的 JSON 属性?

sql-server - ssis 中的意外终止错误

sql - 使用 group by 进行 sql 查询时出现错误

sql-server - 我的查询似乎是正确的,但没有结果