无法从链接服务器插入到具有标识列的表中



我有下表:

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以便在插入中包含标识列,我会收到错误消息:

找不到对象"服务器名.db_name.dbo.tbl_name"因为它不存在或者您没有权限。

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

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

在INSERT语句中明确定义列:

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

最新更新