Sql-Server

使用 OPENQUERY 到 Oracle 的 DELETE 和 INSERT 需要它們之間的長時間延遲

  • December 17, 2020

我正在對 Oracle 的 OPENQUERY 執行 DELETE,然後執行 INSERT。我已經嘗試過使用 WHERE 進行直接刪除以及使用 JOIN 進行過濾。INSERT 只是一個 INSERT OPENQUERY/SELECT。我還嘗試了過濾更新,然後在新行上插入。由於我不能對 OPENQUERY 進行 MERGE,因此我必須連續執行兩個語句。

刪除、更新和插入按預期工作,但前提是我間隔 10 分鐘執行它們。單獨地,它們在不到一秒的時間內完成。當使用 sp_executesql 或 SSMS 背靠背執行時,無論是單獨執行它們還是在一個腳本中執行,它們都需要 10分鐘

與 Oracle DBA 交談,沒有為他敲響任何鈴聲。

查詢本身,儘管我想分享它們以幫助您幫助我,但我沒有這樣做的自由。請相信我的話,當它們分開執行 10 分鐘時,它們都可以在不到一秒的時間內按預期工作,而一起執行時則需要 10 分鐘。

結果證明這是 OPENQUERY 的問題以及需要 OPTION (RECOMPILE) 的相關“元數據不一致”問題。為寫入查詢(UPDATE、INSERT 和 DELETE)切換到 EXEC AT 解決了限制效果。

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