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

Administration SQL Server Discussion :

Serveur lié impossible de faire un BEGIN TRAN + DELETE


Sujet :

Administration SQL Server

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut Serveur lié impossible de faire un BEGIN TRAN + DELETE
    Bonjour,

    J'ai un problème avec le serveur lié.

    Je ne sais pas pourquoi je n'arrive pas à utiliser les transactions sur mon serveur lié.

    je fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BEGIN TRAN
    DELETE FROM monServeur.maBase.dbo.Table
    Au début j'avais une erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 7391, Level 16, State 2, Line 4
    The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "SERVEURDEV" was unable to begin a distributed transaction.
    et maintenant j'ai celle ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 8509, Level 16, State 1, Line 1
    Import of Microsoft Distributed Transaction Coordinator (MS DTC) transaction failed: 0x8004d01f(error not found).


    Savez-vous pourquoi?

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Il vous faut dans un premier temps vérifier que le service Distributed Transaction Coordinator est démarré dans la liste des services (clic droit sur le Poste de travail > Gérer > ouvrir le nœud Services et applications > Services et recherchez Distributed Transaction Coordinator > clic-droit > Propriétés > type de démarrage : automatique, et cliquez sur le bouton Démarrer s'il n'est pas grisé )

    Ensuite rendez-vous dans les outils d'administration (Démarrer > Programmes > Outils d'administration) et choisissez Services de composants.
    Dans la barre d'outils, cliquez sur le petit ordinateur, complètement à droite.
    Dans l'onglet MSDTC, vérifiez que la coche Utiliser un coordinateur local, et vérifiez que le bouton Démarrer est grisé.
    Cliquez sur le bouton Configuration de la sécurité vérifiez que la coche Accès DTC réseau est cochée, et configurez les coches et boutons radio selon vos besoins puis validez le tout

    @++

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    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 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Enfin, il faut explicitement déclarer votre transaction avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BEGIN DISTRIBUTED 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/ * * * * *

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut J'ai toujours des problèmes
    J'ai réussi a créer des transactions il fallait taper Mais j'ai toujours des problèmes, j'essaye d'exécuter ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SET XACT_ABORT ON
     
    begin tran
    delete from [Server].base.dbo.table -- ok
     
    SELECT TOP 1 * FROM dbo.maTable2 -- ok
     
    IF EXISTS(SELECT TOP 1 * FROM dbo.maTable2) -- erreur
    BEGIN
    	print 'ok'
    end
     
    rollback
    Le fait de mettre BEGIN DISTRIBUTED TRANSACTION ne change rien.

    J'obtiens l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 1206, Level 18, State 118, Line 1
    The Microsoft Distributed Transaction Coordinator (MS DTC) has cancelled the distributed transaction.
    Je crois que je vais abandonner l'idée d'avoir un serveur lié. J'ai que des problèmes.

    En faisant des recherches je suis tombé sur ce patch : http://support.microsoft.com/kb/937517 Je me demande si je dois l'installer ou pas.

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Le fait d'avoir positionné l'option de session XACT_ABORT à ON ne vous retransmet pas les erreurs sur le serveur local.
    Donc vous ne connaissez pas le libellé l'erreur lorsque celle-ci échoue sur le serveur distant.
    Ce n'est pas cette option qui vous empêchait de démarrer une transaction distribuée.

    @++

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Le fait d'avoir positionné l'option de session XACT_ABORT à ON ne vous retransmet pas les erreurs sur le serveur local.
    Donc vous ne connaissez pas le libellé l'erreur lorsque celle-ci échoue sur le serveur distant.
    Ce n'est pas cette option qui vous empêchait de démarrer une transaction distribuée.
    @++
    Si, je ne le fais pas j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    OLE DB provider "SQLNCLI" for linked server "SERVEUR" returned message "Cannot start more transactions on this session.".
    Msg 7395, Level 16, State 2, Line 1
    Unable to start a nested transaction for OLE DB provider "SQLNCLI" for linked server "SERVEUR". A nested transaction was required because the XACT_ABORT option was set to OFF.
    Ce qui m'embête beaucoup d'ailleurs.
    Ça ne passe plus par le bloc CATCH en cas d'erreur.

  7. #7
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Le code que vous avez donné est-il le code réel ?
    N'y-a-t-il pas un appel à une procédure stockée qui démarrerait une transaction distribuée ?

    @++

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Le code que vous avez donné est-il le code réel ?
    N'y-a-t-il pas un appel à une procédure stockée qui démarrerait une transaction distribuée ?

    @++
    Oui, si je tape ce code dans management studio, ça me donnait cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 1206, Level 18, State 118, Line 1
    The Microsoft Distributed Transaction Coordinator (MS DTC) has cancelled the distributed transaction.
    Cependant, on vient de mettre le service pack 3, je n'ai plus de problème avec la transaction distribuée, mais il me faut toujours faire: sinon j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 8509, Level 16, State 1, Line 1
    Import of Microsoft Distributed Transaction Coordinator (MS DTC) transaction failed: 0x8004d01f(error NOT found).

Discussions similaires

  1. Serveur lié impossible de faire ALTER TABLE ou TRUNCATE
    Par cmako dans le forum Administration
    Réponses: 1
    Dernier message: 11/11/2009, 12h55
  2. [TortoiseSVN] Impossible de faire un update des fichiers disponibles sur le serveur
    Par genjy dans le forum Subversion
    Réponses: 1
    Dernier message: 31/08/2009, 00h12
  3. Réponses: 2
    Dernier message: 14/12/2005, 22h57
  4. Impossible de faire marcher SESSIONS_PER_USER
    Par jack554 dans le forum Oracle
    Réponses: 7
    Dernier message: 05/01/2005, 11h50
  5. impossible de faire fonctionner phppgadmin et pgdmin3
    Par le_ben dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 09/12/2004, 14h27

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