首页 > 解决方案 > 无法从链接服务器插入带有标识列的表

问题描述

我有下表:

  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;

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

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

这给出了以下错误消息:

列名或提供的值的数量与表定义不匹配

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

找不到对象“server_name.db_name.dbo.tbl_name”,因为它不存在或您没有权限。

这有点误导,因为我可以从表格中选择甚至发布update声明。我想我没有identity_insert从链接服务器设置的权限,尽管我可以使用相同的凭据直接在服务器本身上进行设置。

那么如何从链接服务器插入到这个表中呢?

标签: sql-serverinsertlinked-serveridentity-column

解决方案


在 INSERT 语句中显式定义列:

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

推荐阅读