Na palestra que ministrei recentemente no 4h Microsoft do Guia DBA no Rio de Janeiro apresentei em um dos meus laboratórios como montar uma query distribuída.
Logo em seguida, recebi uma mensagem de um participante me questionando sobre o ERRO 7395 quando ele tenta inserir registro na view distribuída.
Quando este erro ocorre, geralmente é porque faltou o XACT_Abort ON ou falta permissão no Local DTC.
Veja abaixo como resolver o problema:
Para o XACT_Abort ON basta adicionar o código abaixo:
SET XACT_ABORT ON GO BEGIN DISTRIBUTED TRANSACTION INSERT INTO cliente (cdcliente, [nmcliente] ,[nfuf]) VALUES (80011, 'Rodrigo', 'RJ') COMMIT TRANSACTION
Não querendo alterar todos os códigos do software?
Se não houver impacto em outros bancos de dados da mesma instância, basta alterar a propriedade na guia de conexões.
Veja o código abaixo:
EXEC sys.sp_configure N'user options', N'16384' GO RECONFIGURE WITH OVERRIDE GO
Com esta configuração alterada podemos suprimir o SET XACT_Abort ON do código.
Entretanto, se você não teve êxito até agora, pode ser permissão no DTC.
A permissão será concedida no Component Services.
No prompt digite dcomcnfg.exe
Após aberto o Component Services acesse Console Root\Component Services\Computers\My Computer\Distributed Transactions
Segue abaixo a imagem da tela que abrirá:
Com o botão direito do mouse sobre Local DTC vá em Properties na guia Security e habilite os parâmetros conforme a imagem abaixo:
Desta forma estamos concedendo permissão para o Distributed Transaction.
Todas as vezes que eu recebi este erro, resolvi com uma das duas opções acima.
Espero que ajude!
Abraço, Rodrigo