Consultas e Transações Distribuídas
06/04/2009
0
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?
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?
Mss@neosoftware
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)