Sql-Server

通過連結伺服器將行更新到 MySQL 數據庫

  • October 12, 2016

我正在嘗試使用從 MS SQL 2012 到 MySQL DB 的連結伺服器更新單行。

我執行這個查詢:

UPDATE b2b...product set [index]=`test_value` where id=12345;

錯誤資訊:

連結伺服器“b2b”的 OLE DB 提供程序“MSDASQL”無法更新表“

$$ b2b $$…$$ product $$"。行集正在使用樂觀並發,並且在包含行最後一次獲取或重新同步後,列的值已更改。

我已經用Google搜尋了這個錯誤,每個人都建議在 MySQL ODBC 數據源配置中檢查選項“返回匹配的行而不是受影響的行”,所以我嘗試這樣做,但已經檢查過了。所以我試圖取消選中這個,它沒有幫助,所以我重新檢查了這個設置。

如果選中此選項沒有幫助,我還能做什麼?

順便說一句,我使用 MySQL WorkBench 嘗試了相同的更新,它工作正常。

編輯:這很奇怪。當我使用 MySQL WorkBench 更新特定行時,我可以使用 SQL Server Management Studio 更新它。我嘗試了幾行。順便說一句,我必須在 MySQL WorkBench 中設置安全模式才能更新行。

您可以使用

EXEC('UPDATE product set [index]=''test_value'' where id=12345;') AT b2b

作為替代語法,它以直通模式執行查詢。

您收到樂觀鎖定錯誤的原因可能是因為查詢無法在傳遞中執行,因此 SQL Server 下載整個表,找到要更新的行,然後將該行推回連結伺服器。在讀取行和寫入行之間,連結伺服器中的值已更改,因此您存在樂觀鎖定衝突。

引用自:https://dba.stackexchange.com/questions/152050