Estou tentando configurar um servidor vinculado do MS SQL Server 2012 para o PostgreSQL 9.3 por meio de servidores vinculados e driver ODBC do PostgreSQL. Tudo funciona, até que uma determinada consulta invoque o MSDTC, momento em que recebo um erro como este na máquina do SQL Server e a consulta falha totalmente:
> 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
A DLL é de fato esse local, então o registro parece estar apontando para o arquivo correto. O driver ODBC é de 64 bits e meu sistema operacional também. "File=%2" está apontando para algo na unidade d, o que não faz sentido para mim, já que a unidade d é um DVD. O MSDTC está em execução... o que estou perdendo?
Eu alternei as propriedades do servidor vinculado "Ativar promoção de transações distribuídas para RPC" para "Verdadeiro" e "Falso" e isso não altera o problema e não produz um erro diferente.
Caso contrário, vasculhar a Internet não me trouxe nada.
Última coisa a apontar, minha consulta não está realmente fazendo nenhuma atualização - está apenas puxando dados. Portanto, não sei por que o MSDTC get é invocado em primeiro lugar ...
Corrigi o problema alterando as permissões da pasta na pasta do driver Postgresql ODBC e dando acesso de leitura/execução ao serviço de rede. Porque o MS DTC é executado no serviço de rede, o que confirmei observando as propriedades do serviço.
Isso acabou com o erro!