Array
(
)

Consultas e Transações Distribuídas

Mss@neosoftware
   - 06 abr 2009

Preciso inserir em uma tabela do servidor local o resultado de uma procedure executada no servidor remoto.
Foi criado um Linked Server para o servidor remoto com nome hipotético SERVIDOR_REMOTO
O MSDTC foi devidamente habilitado nos dois servidores.

O comando
EXEC P_RETORNA_SELECT AT SERVIDOR_REMOTO
funciona e retorna o resultado da procedure remota

Já o comando
INSERT INTO TABELA_LOCAL EXEC P_RETORNA_SELECT AT SERVIDOR_REMOTO
retorna o erro:
OLE DB provider ´SQLNCLI´ for linked server ´SERVIDOR_REMOTO´ returned message ´No transaction is active.´.
Msg 7391, Level 16, State 2, Procedure P_RETORNA_SELECT, Line XX
The operation could not be performed because OLE DB provider ´SQLNCLI´ for linked server ´SERVIDOR_REMOTO´ was unable to begin a distributed transaction

Na SQLMagazine Edição 58 tem um artigo tratando do assunto, porém os exemplos mostram duas queries dentro de um transação distribuída, usando ´BEGIN DISTRIBUTED TRASACTION´, uma inserindo registros na tabela local e a outra na tabela remota.
Mas o que eu preciso é ler do remoto e inserir na tabela local. E mais a consulta tem que ser retornada através da execução de uma procedure no servidor remoto.
Mesmo seguindo todas as orientações do artigo o erro persiste.

Alguém pode me ajudar?