突然對於某個文件(我認爲是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.
如果您有任何線索對此,請不要猶豫回答這個問題。
感謝, 安德烈亞斯
AS400的數據庫管理員剛剛將有問題的表中的數據複製到新表中,並要求我再試一次。插入,更新和刪除在表格的新副本中沒有問題。她還寫道,這個錯誤可能與承諾控制有關。這可能是相同的情況:http://stackoverflow.com/questions/9040884/turn-off-journaling-in-sql-server-t-sql –
我認爲,承諾控制是一個很好的看看。通常情況下,IBM i表不在承諾控制之下,因此插入和刪除需要NC。我想知道數據庫管理員最近是否更改了表格,以便他們現在受到承諾控制(反之亦然)? –
由於記錄長文本的問題,Journalling在幾天前被設置爲「否」。據我瞭解,日記和承諾控制取決於彼此(或其中之一)。我試圖禁用對iSeries ODBC數據源的承諾控制,但這沒有什麼區別(與以前相同的錯誤)。數據庫管理員將在明天重新創建表格,並重新嘗試。 –