Sql-Server
通過連結伺服器將行更新到 MySQL 數據庫
我正在嘗試使用從 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 下載整個表,找到要更新的行,然後將該行推回連結伺服器。在讀取行和寫入行之間,連結伺服器中的值已更改,因此您存在樂觀鎖定衝突。