Bonjour,
J'utilise un déclencheur pour mettre à jour un champ d'une table avec les valeurs d'un champ d'une autre table sur un serveur lié.
(Merci de ne pas me demander pourquoi, je gagnerai du temps)
Entre 2 serveurs sql 2008, tout fonctionne parfaitement.
Voici une partie du code :
Cependant, avec un serveur 2000, j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TRIGGER [MonTrig] ON [dbo].[TableLocal] AFTER UPDATE, INSERT AS BEGIN declare @code char(50) select @code=CODE from "monserveur".Mabase.dbo.TableCode where id_code = 1 update TableLocal set code = @code where id_code=1 END
Si je lance le code précédent en dehors du déclencheur (dans un analyseur de requête par exemple), il fonctionne correctement et la table local est bien mise à jour avec la valeur du champ donc pas de problème de configuration MSDTC ou du serveur lié acceptant les transactions comme j'ai pas le voir sur d'autres discutions.Serveur : Msg 7391, Niveau 16, État 1, Procédure MonTrig, Ligne 8
L'opération demandée ne peut pas être effectuée car le fournisseur OLE DB 'SQLOLEDB' 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 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].
Si vous avez une idée ou une solution de contournement, merci d'avance.
Partager