无法使用链接服务器的标识列插入 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;
我有以下 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;