2013-01-02 84 views
1

突然對於某個文件(我認爲是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://stackoverflow.com/questions/9040884/turn-off-journaling-in-sql-server-t-sql –

+0

我認爲,承諾控制是一個很好的看看。通常情況下,IBM i表不在承諾控制之下,因此插入和刪除需要NC。我想知道數據庫管理員最近是否更改了表格,以便他們現在受到承諾控制(反之亦然)? –

+0

由於記錄長文本的問題,Journalling在幾天前被設置爲「否」。據我瞭解,日記和承諾控制取決於彼此(或其中之一)。我試圖禁用對iSeries ODBC數據源的承諾控制,但這沒有什麼區別(與以前相同的錯誤)。數據庫管理員將在明天重新創建表格,並重新嘗試。 –

回答

1

之所以錯誤是,日記記錄已經被關閉的AS400文件,我們使用鏈接的服務器和iSeries的ODBC數據源從SQL Server連接。這也關閉了承諾控制。

但是,在ODBC iSeries數據源上提交「Commit immediate(* NONE)」的提交確實沒有幫助。 (也許還有比改變設置還要多)

AS/400系統的數據庫管理員使用其默認設置(包括日誌記錄和承諾控制)重新創建了表,然後它全部恢復正常,並且插入,更新和刪除工作,從鏈接的服務器連接。

相關問題