Unable to start a nested transaction for OLE DB provider

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:

[code language=”sql”]
SET XACT_ABORT ON
GO
BEGIN DISTRIBUTED TRANSACTION
INSERT INTO cliente
(cdcliente,
[nmcliente]
,[nfuf])
VALUES
(80011,
‘Rodrigo’, ‘RJ’)
COMMIT TRANSACTION
[/code]

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:

[code language=”sql”]
EXEC sys.sp_configure N’user options’, N’16384′
GO
RECONFIGURE WITH OVERRIDE
GO
[/code]

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á:

clip_image002

 

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:

clip_image004

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

Author: SQLCrespi

Rodrigo Crespi é MVP Data Platform, MCT, MCSE, MCSA, MCIT, MCDBA e MCP em SQL Server, possuí outras certificações em .NET Framework, Dynamics CRM e etc. Iniciou trabalhando com SQL Server na versão 6.5 na época como desenvolvedor, logo direcionou a sua carreira para a área de administração de bancos de dados. Atualmente é Sócio da CrespiDB – Soluções em Plataformas de Dados, além de professor universitário na Uniftec – Caxias do Sul Autor de diversos artigos publicados em sites e revistas sobre SQL Server e engenharia de software, mantem o canal SQLCrespi no Youtube, o blog SQLCrespi, além de ser dedicado ao SQL Server RS PASS Chapter Leader do grupo de profissionais em SQL Server do Rio Grande do Sul.

Deixe uma resposta