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
je n'ai aucun souci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT * FROM [serveurB].[BASE].[dbo].[matable] , ou INSERT INTO [serveurB].[BASE].[dbo].[matable] .....
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 :
J'ai regardé sur le site de microsoft .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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].
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)
Quelqu'un a déjà t il eu ce problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci pour vos réponses
Partager