Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MSDAORA was unable to begin a distributed transaction

1 réponse
Avatar
Florent
Bonjour à tous,
j'ai crée un serveur lié (oracle) sur un serveru sql 2000 tournant sur
windows 2003.
Lorsque j'éxécute une query dans le query analyser tout est OK.
Par contre si je mets tout ça dans un trigger alors j'obtiens le message
d'erreur suivant:
"The operation could not be performed because the OLE DB prvider 'MSDAORA'
was unable to begin a distributed connexion"......

Voici le script de mon trigger:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

alter trigger [MT_TRIGGER_BA] ON [dbo].[Technician]
after insert, update
AS

select * into #Tech_Tmp
from openquery(ORA, 'SELECT
BAANDB.TTCCOM001300.T$EMNO,BAANDB.TTCCOM001300.T$DIVI FROM
BAANDB.TTCCOM001300')

declare @Tech_number as nvarchar(50)
select @Tech_number = Technician_Number from inserted

begin

update Technician
set Ba_Code = (select #Tech_Tmp.Divi from #.Tech_Tmp where
Technician.Technician_Number=#Tech_Tmp.Emno)
where Technician.Technician_Number = @Tech_number

end


Si quelqu'un peut m'aider car je cherche mais je ne trouve pas.
merci d'avance
Florent

1 réponse

Avatar
Fred BROUARD
Il faut que MSDTC soit activé et que vous démarriez une transaction
explicite distribuée avec :

BEGIN DISTRIBUTED TRANSACTION

A +
Florent a écrit :
Bonjour à tous,
j'ai crée un serveur lié (oracle) sur un serveru sql 2000 tournant sur
windows 2003.
Lorsque j'éxécute une query dans le query analyser tout est OK.
Par contre si je mets tout ça dans un trigger alors j'obtiens le message
d'erreur suivant:
"The operation could not be performed because the OLE DB prvider 'MSDAORA'
was unable to begin a distributed connexion"......

Voici le script de mon trigger:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

alter trigger [MT_TRIGGER_BA] ON [dbo].[Technician]
after insert, update
AS

select * into #Tech_Tmp
from openquery(ORA, 'SELECT
BAANDB.TTCCOM001300.T$EMNO,BAANDB.TTCCOM001300.T$DIVI FROM
BAANDB.TTCCOM001300')

declare @Tech_number as nvarchar(50)
select @Tech_number = Technician_Number from inserted

begin

update Technician
set Ba_Code = (select #Tech_Tmp.Divi from #.Tech_Tmp where
Technician.Technician_Number=#Tech_Tmp.Emno)
where Technician.Technician_Number = @Tech_number

end


Si quelqu'un peut m'aider car je cherche mais je ne trouve pas.
merci d'avance
Florent





--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************