sql-server - 无法从链接服务器插入带有标识列的表
问题描述
我有下表:
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
从链接服务器设置的权限,尽管我可以使用相同的凭据直接在服务器本身上进行设置。
那么如何从链接服务器插入到这个表中呢?
解决方案
在 INSERT 语句中显式定义列:
insert into [server_name].db_name.dbo.tbl_name (col1,col2)
select
col1,
col2
from dbo.other_tbl_name;
推荐阅读
- node.js - MongoDB 官方 Docker 映像初始化脚本未运行
- python - 熊猫:merge_asof 方法。用 NaN 代替零保持插值
- android - 如何保护 API Key 和 AppID 被中间拦截?
- java - 我想为我的 android 应用创建一个多用户登录
- microsoft-cognitive - QnAMaker Update API 如何知道要更新哪一个?
- arangodb - 有效消除旧文档
- flutter - 如何省略第二个条件
- javascript - 尝试从数组调用返回字符串时出错
- javascript - 在结构定义中按条件设置结构字段值
- javascript - HTML / JS:如何显示选中
- 内容