【问题标题】:Linked server INSERT, UPDATE and DELETE fails with "Unknown provider error"链接服务器 INSERT、UPDATE 和 DELETE 失败并出现“未知提供程序错误”
【发布时间】:2013-01-03 16:21:55
【问题描述】:

对于某个文件(我认为是 AS/400 的远程系统中的一个表),INSERT、UPDATE 和 DELETE 突然失败。

我们使用的链接服务器是在 SQL Server 中设置的,它使用 ODBC 数据源 (DSN)。数据源是“iSeries Access for Windows 的 ODBC 数据源”。

只有一个表有这个问题。我们可以使用相同的链接服务器在其他表中进行插入和更新,而不会出现任何错误,并且 SELECT 仍然适用于有问题的表。

我们为 INSERT 和 UPDATE 语句收到这些消息(在下面的代码中替换了服务器和数据库名称):

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "MSDASQL" for linked server "MYSERVER" reported an error. 
The provider did not give any information about the error.
Msg 7343, Level 16, State 2, Line 1
The OLE DB provider "MSDASQL" for linked server "MYSERVER" could not INSERT INTO 
table "[MYSERVER].[MYDB].[DMPCOM].[DMPXIF]". Unknown provider error.

并且 DELETE 给出了这个消息:

The OLE DB provider "MSDASQL" for linked server "MYSERVER" could not delete from 
table ""MYDB"."DMPCOM"."DMPXIF"". There was a recoverable, provider-specific 
error, such as an RPC failure.

如果您对此有任何线索,请不要犹豫,回答这个问题。

谢谢, 安德烈亚斯

【问题讨论】:

  • AS400的db admin刚刚将问题表中的数据复制到一个新表中,并要求我再试一次。插入、更新和删除在表的新副本中没有问题。她还写道,这个错误可能与承诺控制有关。这可能是相同的情况:stackoverflow.com/questions/9040884/…
  • 我认为承诺控制是一个很好的首选。很多时候,IBM i 表不受提交控制,因此插入和删除需要 NC。我想知道数据库管理员最近是否更改了您的表,以便它们现在受到承诺控制(反之亦然)?
  • 日志在几天前被设置为否,因为记录长文本的问题。据我了解,日志和承诺控制相互依赖(或其中一个依赖于另一个)。我尝试禁用 iSeries ODBC 数据源上的提交控制,但这没有任何区别(与以前相同的错误)。数据库管理员明天将使用原始设置重新创建表,我们会再试一次。

标签: odbc ibm-midrange linked-server msdasql


【解决方案1】:

错误的原因是 AS400 文件上的日志功能已关闭,我们使用链接服务器和 ODBC iSeries 数据源从 SQL Server 连接到该文件。这也关闭了承诺控制。

在 ODBC iSeries 数据源上将提交设置为“立即提交 (*NONE)”并没有帮助。 (也许除了更改该设置之外还有更多内容。)

AS/400 系统的数据库管理员使用其默认设置重新创建了该表,包括日志和提交控制,然后一切恢复正常,并且从链接服务器连接中插入、更新和删除工作正常。

【讨论】:

    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 2019-03-31
    • 2018-12-06
    • 2015-10-05
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    相关资源
    最近更新 更多