MSDAORA was unable to begin a distributed transaction

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fred BROUARD
Le #18161141
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 *************************
Publicité
Poster une réponse
Anonyme