我有下表:
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;