【问题标题】:Insert statement from a linked server won't insert into the table. What am I missing here?来自链接服务器的插入语句不会插入到表中。我在这里想念什么?
【发布时间】:2020-01-28 16:28:36
【问题描述】:

我正在使用 SQL Server 2016 尝试从位于链接服务器上的几个表中插入记录。我可以运行查询并提取我正在查找的数据,但是当我尝试将其插入到表中时,它运行成功,但没有数据插入到 SQL Server 表中。这是我的代码;

insert into BTGroup (authorizedgroup, itemno)
select custno, prod 
from OPENQUERY(NxtTest, '
select s.custno, p.prod, p.zauthorized
from pub.zics s 
join pub.csp p on s.prod = p.prod
where p.zauthorized = 1
')

我觉得我在这里遗漏了一些明显的东西,但我是使用链接服务器的新手,所以我有点迷茫。任何帮助是极大的赞赏。

【问题讨论】:

    标签: sql sql-server database linked-server openquery


    【解决方案1】:

    如果您没有收到任何错误消息并在结果窗口中收到类似(20 rows affected) 的消息,那么一切正常。

    在执行查询时检查包含BTGroup 表的选定数据库或将其更改为完整地址。 (例如MyDatabase.dbo.BTGroup

    【讨论】:

    • 令人惊讶的是,这修复了它。好吧,至少抛出一个错误让我知道这是一个 PK 约束导致数据不流动,然后我能够修复它。不知道为什么它不只是给我这个错误开始。感谢您的及时帮助,干杯。
    • 因此您在各种数据库中有两个或多个名为“BTGroup”的表。如果您在此问题中的问题得到解决,请将答案标记为已接受。
    • 不,它试图插入数据库中已经存在的记录,这导致它失败,因为 custno 是一个 PK。我只需要在对链接服务器的查询之后添加一个“不存在”子句。当我没有使用完整地址时,查询会显示已完成。由于某种原因,添加完整地址会引发错误,指出“无法插入.... custno 已存在”。
    猜你喜欢
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多