无法使用链接服务器的标识列插入 table

Cannot insert into table with identity column from linked server

我有以下 table:

  use db_name;
  create table dbo.tbl_name(
  id_col int identity(1,1),
  col1 varchar(20),
  col2 varchar(50)
  );

我可以毫无问题地向其中插入值:

insert into dbo.tbl_name
select
col1,
col2
from dbo.other_tbl_name;

当我尝试从链接服务器插入 table 时出现问题:

insert into [server_name].db_name.dbo.tbl_name
select
col1,
col2
from dbo.other_tbl_name;

这给出了以下错误消息:

Column name or number of supplied values does not match table definition

如果我尝试设置 identity_insert 以便我可以在插入中包含标识列,我会收到错误消息:

Cannot find the object "server_name.db_name.dbo.tbl_name" because it does not exist or you do not have permissions.

这有点误导,因为我可以从 table 中 select 甚至发出 update 语句。我想我没有从链接服务器设置 identity_insert 的权限,但我可以使用相同的凭据直接在服务器本身上进行设置。

那么我怎样才能从链接服务器插入这个 table?

在 INSERT 语句中明确定义列:

insert into [server_name].db_name.dbo.tbl_name (col1,col2)
select
col1,
col2
from dbo.other_tbl_name;