Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/03/2011, 17h14   #1
Membre du Club
 
Inscription : mai 2007
Messages : 194
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2007
Messages : 194
Points : 48
Points : 48
Par défaut MSSQL2008 - trigger faisant un update sur Linked server

Bonjour a tous,

je galère depuis le début avec ces linked server!!! J'ai:
1 serveur MS Sql 2008 dans lequel j'ai configuré un Linked Serveur vers Oracle 7 (je sais, c'est pas tout jeune !!!)

Sur une table, j'ai créé un trigger sur le update. Le but est que certaines données mises a jours dans la table courante, soient répercutées dans oracle.


Mon trigger me génère la requête suivante (qui fonctionne si je l’exécute)
Code :
1
2
3
UPDATE openquery(myLkServ,'select * from maTableOracle 
			where ORD_NO = ''12345''') 
			SET CUST_NO='123', CUST_NAME='azerty'
Mais lorsque je fais un update de ma table, j'obtiens la réponse suivante:
Code :
1
2
3
4
 
(1 row(s) affected)
Msg 8522, Level 18, State 1, Line 1
Microsoft Distributed Transaction Coordinator (MS DTC) has stopped this transaction.
C'est quand même étrange qu'il me marque 1 rows affected!!! Sauf que par après, je ne vois aucune modification dans la table.

merci pour votre aide
yozart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 17h36   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour,

C'est normal :

1° vous lancez votre ordre UPDATE
2° une ligne est mise à jour dans la table ("1 row(s) affected")
3° votre trigger est déclenché
4° Votre trigger provoque une erreur, ce qui provoque un rollback
5° la transaction est annulée, la ligne initialement affectée retrouve son état d'origine
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2011, 09h00   #3
Membre du Club
 
Inscription : mai 2007
Messages : 194
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2007
Messages : 194
Points : 48
Points : 48
Merci pour l'explication. Cependant, comment résoudre l'erreur lancée par mon trigger ?

Le message d'erreur est quand même pas très explicite de mon point de vue !

je viens d'essayer DTCPing.exe et obtiens le message suivant:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
++++++++++++++++++++++++++++++++++++++++++++++
     DTCping 1.9 Report FOR SQLSERVER_server
++++++++++++++++++++++++++++++++++++++++++++++
RPC server IS ready
++++++++++++Validating Remote Computer Name++++++++++++
03-30, 09:37:32.000-->Start DTC connection test
Name Resolution:
	oracle_server-->123.123.123.123-->oracle_server.mon_domaine
03-30, 09:37:32.000-->Start RPC test (SQLSERVER_server-->oracle_server)
Problem:fail TO invoke remote RPC method
Error(0x6BA) at dtcping.cpp @303
-->RPC pinging exception
-->1722(The RPC server is unavailable.)
RPC test failed

[EDIT]
Alors en fait, il semblerait que ca soit simplement le serveur distant qui n'accepte pas les transactions distribuées. Existe t'il un moyen pour les désactiver dans les trigger? ou alors les contourner ?
yozart est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h49.


 
 
 
 
Partenaires

Hébergement Web