Transactions distribuées et triggers
Bonjour,
Je dois activer le service MSDTC pour pouvoir utiliser les requêtes distribuées
entre 2 serveurs sql
J'ai donc activer ce service.
J'ai paramétré également paramétré un serveur lié entre mes 2 serveurs
Lorsque je fais un
Code:
1 2 3 4 5 6
| SELECT *
FROM [serveurB].[BASE].[dbo].[matable] ,
ou
INSERT INTO [serveurB].[BASE].[dbo].[matable] ..... |
je n'ai aucun souci
Par contre lorsque j'utilise le même INSERT dans un trigger sur une table de mon serveur A j'ai le message d'erreur suivant :
Code:
1 2 3 4
| Server: Msg 7391, Level 16, State 1, Procedure TR_test_msdtc, Line 14
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: New transaction cannot enlist in the specified transaction coordinator. ]
Trace de l'erreur OLE DB [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]. |
J'ai regardé sur le site de microsoft .
Apparemment le service MSDTC (Microsoft Distributed Transaction Coordinator) n'est pas configuré pour l'accès réseau dans ce cas.
Je l'ai donc paramétré mais j'ai toujours cette erreur
Mon trigger est tout simple (trigger de test)
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
| CREATE TRIGGER TR_test_msdtc ON test_msdtc
FOR INSERT
AS
SET XACT_ABORT ON
DECLARE @test_VC VARCHAR(50)
DECLARE @test_int INT
SELECT @test_VC = test_VC,
@test_int = test_int
FROM INSERTED
INSERT INTO [SERVEURB].[BASE].[dbo].test_msdtc (test_VC,test_int)
VALUES (@test_VC,@test_int)
IF @@ERROR <> 0
BEGIN
PRINT 'ERREUR'
ROLLBACK TRANSACTION
SET XACT_ABORT OFF
RETURN
END
ELSE
BEGIN
PRINT 'OK'
SET XACT_ABORT OFF
RETURN
END |
Quelqu'un a déjà t il eu ce problème ?
Merci pour vos réponses