【发布时间】: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