probleme transaction distribuée de sql server vers oracle
Bonjour à tous,
je souhaite traiter des insertion dans une table dans une base distante oracle de manière transactionnel.
Les insertions se feront a partir de sql server 2000 vers oracle.
Je passe par une serveur lié qui utilise le provider ole db d'oracle.
Le serveur lié marche bien pour toutes les opérations simple (insert, select etc ...)
Lorsque j'execute une procédure stocké qui contient :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
CREATE PROCEDURE MA_PROCSTOCK
AS
BEGIN
DECLARE @ERREUR INT
SET XACT_ABORT ON
BEGIN DISTRIBUTED TRANSACTION
INSERT INTO LINKED_SERVER..SCHEMA.TABLE_DISTANTE (...)
SELECT ... FROM table_local
SET @ERREUR=@@ERROR
IF (@ERREUR=0)
BEGIN
COMMIT TRANSACTION
END
ELSE
BEGIN
ROLLBACK TRANSACTION
END
SET XACT_ABORT OFF
END
GO |
j'ai le message d'erreur suivant :
Serveur : Msg 7391, Niveau 16, État 1, Procédure MA_PROCSTOCK, Ligne 10
L'opération demandée ne peut pas être effectuée car le fournisseur OLE DB 'OraOLEDB.Oracle' n'a pas réussi à démarrer de transaction distribuée.
[OLE/DB provider returned message: La nouvelle transaction ne peut pas s'inscrire dans le coordinateur de transactions spécifié. ]
Trace de l'erreur OLE DB [OLE/DB Provider 'OraOLEDB.Oracle' ITransactionJoin::JoinTransaction returned 0x8004d00a].
si quelqun peut m'aider dans ma résolution du problème je l'en remercie d'avance.
ps : d'autres transactions distribuées sur un autre serveur liée fonctionnent parfaitement. (ce n'est donc pas a mon avis un problème de parefeu mais plus peut etre la config du serveur lié (les options a cocher))
Merci.