Erro ao receber dados do WCF-Oracle: COMMIT is not allowed in a subordinate session

Depois dos artigos anteriores sobre WCF-Oracle, conseguimos configurar corretamente e estamos preparados para receber os dados.

Porém ao ligar a porta, a orchestration não sobe e descobrimos esse Warning no Event Viewer:

The adapter "WCF-ORACLE" raised an error message. Details "Microsoft.ServiceModel.Channels.Common.TargetSystemException: ORA-02089: COMMIT is not allowed in a subordinate session.
ORA-06512: at "Usuário.Package", line 182

Se você sentir a necessidade de arrancar os cabelos, como eu, levante-se da cadeira e vá tomar um café, rs.

Causa:

Provavelmente na procedure, existe um COMMIT, alterando o status de uma tabela por exemplo, e a porta do Biztalk está habilitada para usar a transação do adaptador, que é o valor default.

Solução:

Existem duas, na minha opnião a segunda é a mais fácil e é a que estou de fato usando:

  1. Tire o COMMIT da procedure e na coloque o update na propriedade PostPollStatement, que fica na aba Binding na categoria PollingReceive.
  2. Altere a propriedade UseAmbienteTransaction para False, essa propriedade fica na aba Binding na categoria Transaction.

Então nesse artigo, vimos como resolver o erro, de receber dados quando se tem um COMMIT dentro da procedure do ORACLE.

Até a próxima.

Seja o primeiro a comentar ;)

Postar um comentário

BizTalk 360

Visitas

Arquivo do blog