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 :

ROLLBACK et transaction distribuée


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 109
    Points : 96
    Points
    96
    Par défaut ROLLBACK et transaction distribuée
    Bonjour,

    Je vous sollicite pour comprendre un problème dans l'un de nos trop vieux programmes entre 2 serveurs SQL. J'ai le code suivant sur le SERVEUR A dans une procédure stockée lancée depuis un agent SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    BEGIN TRY
    
    EXEC [SERVEURB].BDDB.dbo.ProcedureMetier
    
    END TRY
    BEGIN CATCH
    IF XACT_STATE() <> 0  BEGIN ROLLBACK TRANSACTION  END
    END CATCH
    Lorsque le serveur B kill la procédure à cause d'un verrou,cela déclenche le rollbakc sur le serveur A. Pourtant, lorsque la procédure est de nouveau lancée depuis le serveur A, j'ai le message d'erreur suivant:
    "Erreur n° 3981, L'opération de transaction ne peut pas être exécutée parce que des demandes sont en attente dans cette transaction."

    Je ne comprends pas pourquoi après le rollback @@Transaction n'est pas propre.

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 774
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 774
    Points : 52 746
    Points
    52 746
    Billets dans le blog
    5
    Par défaut
    Une transaction distribué est un exercices hautement périlleux et fortement déconseillé. J'ai écrit un article la dessus :
    https://blog.developpez.com/sqlpro/p..._a_deux_phases

    En gros si vous voulez avoir quelques chances que cela marche il faut au préalable :
    1) activer le service MSDTC sur les deux serveurs
    2) démarrer une transaction explicite distribuée (BEGIN DISTRIBUTED TRANSACTION)
    3) prier pour que cela marche.

    Bon courage !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 109
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    La transaction distribuée fonctionne depuis des années. Seulement par moment, un verrou provoque un kill de la procédure distribuée. Et dans ce cas là, plus moyen de la relancée à cause du message d'erreur cité précédement.

Discussions similaires

  1. Conversion du type DATETIME lors d'une transaction distribuée
    Par Erwan1978 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/01/2008, 11h06
  2. transaction distribuée et transaction autonome
    Par eabitbol33 dans le forum SQL
    Réponses: 5
    Dernier message: 22/08/2007, 17h14
  3. Transactions distribuées et triggers
    Par mikedavem dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 15/04/2007, 20h00
  4. [Transaction Distribuées]Transaction et serveurs liés
    Par zaoueche dans le forum InterBase
    Réponses: 1
    Dernier message: 13/03/2007, 22h15
  5. rollbacks et transactions distribuées
    Par GMI3 dans le forum Oracle
    Réponses: 8
    Dernier message: 26/09/2006, 09h19

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