链接服务器INSERT,UPDATE和DELETE失败,出现“未知提供者错误”

链接服务器INSERT,UPDATE和DELETE失败,出现“未知提供者错误”

问题描述:

突然对于某个文件(我认为是AS/400的远程系统中的表),INSERT,UPDATE和DELETE失败。链接服务器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. 

,并删除给出了这样的消息:

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. 

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

感谢, 安德烈亚斯

+0

AS400的数据库管理员刚刚将有问题的表中的数据复制到新表中,并要求我再试一次。插入,更新和删除在表格的新副本中没有问题。她还写道,这个错误可能与承诺控制有关。这可能是相同的情况:http://*.com/questions/9040884/turn-off-journaling-in-sql-server-t-sql –

+0

我认为,承诺控制是一个很好的看看。通常情况下,IBM i表不在承诺控制之下,因此插入和删除需要NC。我想知道数据库管理员最近是否更改了表格,以便他们现在受到承诺控制(反之亦然)? –

+0

由于记录长文本的问题,Journalling在几天前被设置为“否”。据我了解,日记和承诺控制取决于彼此(或其中之一)。我试图禁用对iSeries ODBC数据源的承诺控制,但这没有什么区别(与以前相同的错误)。数据库管理员将在明天重新创建表格,并重新尝试。 –

之所以错误是,日记记录已经被关闭的AS400文件,我们使用链接的服务器和iSeries的ODBC数据源从SQL Server连接。这也关闭了承诺控制。

但是,在ODBC iSeries数据源上提交“Commit immediate(* NONE)”的提交确实没有帮助。 (也许还有比改变设置还要多)

AS/400系统的数据库管理员使用其默认设置(包括日志记录和承诺控制)重新创建了表,然后它全部恢复正常,并且插入,更新和删除工作,从链接的服务器连接。