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

Développement SQL Server Discussion :

trigger insert entre 2 serveurs


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 84
    Points : 70
    Points
    70
    Par défaut trigger insert entre 2 serveurs
    Bonjour,
    j'utilise MS Server et deux serveurs. Je suis entrain de faire des echanges de données entre les bases de données de ces deux serveurs.
    Je les ai donc déclarés "linked servers".

    Dans l'un de mes serveurs (A), j'ai paramétré un trigger insert sur une table T1. Ce trigger a pour objet de prendre qques champs qui viennent d'être insérés dans T1, et de les insérer dans une table T2 de mon autre serveur(B).
    Lorsque je fais des essais, il y a une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ole/db provider returned message:Impossible de démarrer d'autres transactions pour cette session
    Le problème vient du fait que j'attaque un serveur à partir d'un autre, car si dans mon trigger j'insère les champs dans une table du même serveur, il n'y a pas de problème.....

    Je pense avoir pourtant bien configuré mon "liage de serveurs". D'ailleurs je réussi à faire des insert dans le serveur A à partir d'une procédure stockée du serveur B (et vice-versa).
    Je suis pommé....
    si qqun a compris et a une solution je lui serais reconnaissant de ma la partager.

  2. #2
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Slt,

    As tu demarrer le service MSDTC (Microsoft Distributed Transaction Coordinator) sur les 2 serveurs ?

    a+
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 84
    Points : 70
    Points
    70
    Par défaut
    heu....peut-être pas car je ne sais pas c'est quoi.
    quelle est la manip ?

  4. #4
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Dans Entreprise Manager > Support Services > Distributed Transaction Coordinator, bouton droit, demarrer.
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 84
    Points : 70
    Points
    70
    Par défaut
    merci,
    mais les deux serveurs sont déjà démarrés pour MSDTC...
    une autre solution ?

  6. #6
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 84
    Points : 70
    Points
    70
    Par défaut
    J'ai finalement trouvé la solution.
    Pour ceux que ça intéresse :
    j'ai coché dans les propriétés de mes deux serveurs liés l'option :
    "Appliquer des transactions distribuées" dans l'onglet "Connexions" et ai ajouté "SET XACT_ABORT ON" au début de mon trigger.

    mon trigger :
    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
     CREATE TRIGGER [triggeressai] ON [BERTRAND].[AFFAIRE_ACTION] 
    FOR INSERT 
    AS
    BEGIN
    DECLARE
    @nor varchar(15), @noaff varchar(15), @date datetime, @montant numeric, @marge numeric
    SET XACT_ABORT ON
    SET @nor=(SELECT NOR FROM Inserted)
    SET @noaff=(SELECT NAFF FROM Inserted)
    SET @date=(SELECT DATE_ACTION FROM Inserted)
    SET @montant=(SELECT MONTANT FROM Inserted)
    SET @marge=(SELECT MARGE FROM Inserted)
    INSERT INTO [SERVEURWEB].[DEMO_GESTION].[dbo].[AFFAIRE_ACTION]
    VALUES(@nor,@noaff,'BC',@date,@montant,@marge)
    SET XACT_ABORT OFF
    END
    Désormais, ça marche !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Syntaxe trigger entre deux serveurs
    Par ahmedpa dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 28/08/2013, 16h41
  2. [MySQL] INSERT INTO entre 2 serveurs
    Par Nympheasi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/08/2009, 16h53
  3. Réponses: 67
    Dernier message: 16/12/2007, 13h41
  4. [TSQL] trigger inserted
    Par mous33 dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 31/10/2007, 13h46
  5. insert entre excel et access
    Par patmich2 dans le forum ASP
    Réponses: 6
    Dernier message: 06/10/2004, 13h24

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