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 : 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] .....
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 : 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].
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 : 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
Quelqu'un a déjà t il eu ce problème ?

Merci pour vos réponses