IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

MSSQL2008 - trigger faisant un update sur Linked server


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 208
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    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

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 208
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

Discussions similaires

  1. [2008R2] Update sur Ms Server avec [ With et CROSS]
    Par medhan dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2015, 10h09
  2. [trigger]Probleme d'update sur une table
    Par AlternantOracle dans le forum PL/SQL
    Réponses: 5
    Dernier message: 25/02/2010, 15h11
  3. Trigger FOR UPDATE sur SQL Server
    Par fouad_r dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 05/06/2009, 15h43
  4. Optimisation Update sur SQL SERVER 2000
    Par Hansen69 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/12/2007, 22h17
  5. TRIGGER avec inserted + UPDATE sur INSERTED
    Par shaka84 dans le forum Développement
    Réponses: 3
    Dernier message: 12/04/2006, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo