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 :

Probleme transaction distribuée


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 87
    Par défaut Probleme transaction distribuée
    Bonjour à tous,

    je souhaite traiter des insertion dans une table dans une base distante oracle de manière transactionnel.

    Je passe par une serveur lié qui utilise le provider ole db d'oracle.

    Le serveur lié marche bien pour toutes les opérations simple (insert, select etc ...)

    Lorsque j'execute une procédure stocké qui contient :
    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 PROCEDURE MA_PROCSTOCK
    AS
    BEGIN
    DECLARE @ERREUR	INT
     
    SET XACT_ABORT ON
     
    BEGIN DISTRIBUTED TRANSACTION
     
    INSERT into LINKED_SERVER..SCHEMA.TABLE_DISTANTE (...)
    select  ... from table_local
     
    SET @ERREUR=@@ERROR
     
    IF (@ERREUR=0)
    BEGIN
    	COMMIT TRANSACTION
    	END
    ELSE
    BEGIN
    	ROLLBACK TRANSACTION
    END
     
    SET XACT_ABORT OFF
     
     
    END
    GO

    j'ai le message d'erreur suivant :

    Serveur : Msg 7391, Niveau 16, État 1, Procédure MA_PROCSTOCK, Ligne 10
    L'opération demandée ne peut pas être effectuée car le fournisseur OLE DB 'OraOLEDB.Oracle' n'a pas réussi à démarrer de transaction distribuée.
    [OLE/DB provider returned message: La nouvelle transaction ne peut pas s'inscrire dans le coordinateur de transactions spécifié. ]
    Trace de l'erreur OLE DB [OLE/DB Provider 'OraOLEDB.Oracle' ITransactionJoin::JoinTransaction returned 0x8004d00a].



    si quelqun peut m'aider dans ma résolution du problème je l'en remercie d'avance.

    ps : d'autres transactions distribuées sur un autre serveur liée fonctionnent parfaitement. (ce n'est donc pas a mon avis un problème de parefeu mais plus peut etre la config du serveur lié (les options a cocher))

    Merci.

  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
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Pour faire des transaction distribuées il faut que le service MSDTC soit activé sur tous les serveurs participants à la transaction.

    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 confirmé
    Inscrit en
    Décembre 2007
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 87
    Par défaut
    Salut,
    Merci SQLPRO pour ta réponse.

    Je ne sais si le service msdtc est démarrer sur oracle mais je ne pense pas car oracle est installé sur un OS UNIX et non microsoft.

    bref, cependant je pense que le service de gestion des transaction doit etre en route du coté UNIX. mais je n'ai aucun moyen de le savoir.

    je pense que je peux détourner le problème :

    Juste une tite question :

    étant donnée que sql server est par defaut en mode autocommit et que ma procstock contient qu'une seule instruction( insert into ... select ...), ça revient au même de ne pas faire de transactions du tout non ???

    car si c'est le cas je n'ai meme pas besoin de faire de transaction et donc plus de problème.

    qu'en pensez vous ?

    Merci.

Discussions similaires

  1. probleme transaction distribuée de sql server vers oracle
    Par funboard dans le forum Administration
    Réponses: 4
    Dernier message: 24/01/2008, 14h57
  2. probleme transaction log
    Par mrmfrance dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 10/08/2007, 11h18
  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