Sql-Server

為 XA 資源管理器 DLL 呼叫 LOADLIBRARY 失敗(PostgreSQL 和 SQL Server)

  • May 27, 2016

我正在嘗試通過來自 PostgreSQL 的連結伺服器和 ODBC 驅動程序將連結伺服器從 MS SQL Server 2012 設置到 PostgreSQL 9.3。一切正常,直到給定的查詢呼叫 MSDTC,此時我在 SQL Server 機器上收到這樣的錯誤,並且查詢完全失敗:

> The XA Transaction Manager attempted to load the XA resource manager
> DLL. The call to LOADLIBRARY for the XA resource manager DLL failed:
> DLL=C:\Program Files\psqlODBC\0905\bin\pgxalib.dll, HR=%3, File=%2
> Line=%3.%0

DLL 實際上就是那個位置,所以系統資料庫似乎指向了正確的文件。ODBC 驅動程序是 64 位的,我的作業系統也是如此。“File=%2” 指向 d 驅動器上的某些東西,這對我來說沒有意義,因為 d 驅動器是 DVD。MSDTC 正在執行…我錯過了什麼?

我已將連結伺服器屬性“為 RPC 啟用分佈式事務的提升”切換為“真”和“假”,這不會改變問題,也不會產生不同的錯誤。

否則,在網際網路上搜尋並沒有給我帶來任何東西。

最後要指出的是,我的查詢實際上並沒有進行任何更新——它只是提取數據。所以我不確定為什麼首先呼叫 MSDTC get ……

我通過更改 Postgresql ODBC 驅動程序文件夾的文件夾權限並授予對網路服務的讀取/執行訪問權限來解決此問題。因為 MS DTC 在網路服務下執行,我通過查看服務屬性確認了這一點。

這擺脫了錯誤!

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