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 :

db link erreur


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut db link erreur
    bonjour,

    dans une config avec deux windows 2003 server et deux sql server 2000 sp4,
    via SQL Query Analyser, je peux exécuter parfaitement en local sur un serveur :


    INSERT test VALUES (1,1,'aaa');
    select * from test;


    pour travailler directement dans une bd locale, ou:


    INSERT sgbd03.BD_TEST.dbo.test VALUES (11,1,'aaa');
    select * from sgbd03.BD_TEST.dbo.test;


    pour travailler dans la bd du serveur sgbd03.

    Maintenant, si au lieu d'utiliser le SQL Query Analyser, je place
    INSERT sgbd03.BD_TEST.dbo.test VALUES (11,1,'aaa'); dans un trigger,
    j'obtiens l'erreur :


    Server: Msg 7391, Level 16, State 1, Procedure TR_TEST_LINK, Line 16
    The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.
    [OLE/DB provider returned message: La nouvelle transaction ne peut pas s'inscrire dans le coordinateur de transactions spécifié. ]
    OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].




    J'ai testé ceci sans résultat :

    - mettre la requete du trigger avec BEGIN DISTRIBUTED TRANSACTION
    - vérifier la config DCOM sur des deux serveurs ainsi : http://www.howtogeek.com/howto/windo...rver-2003-sp2/


    J'arrive pas a comprendre pourquoi cela fonction via le SQL Query analyser et pas via mon trigger...

    merci d'avance pour votre aide.

    nico

  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 847
    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 847
    Points : 52 962
    Points
    52 962
    Billets dans le blog
    6
    Par défaut
    Il faut activer MSDTC sur tous les serveurs concourants à la transaction distribuée.

    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 à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    salut,
    merci pour ta piste.

    sur les deux serveurs, le service DTC tourne. il est démarré automatiquement au démarrage des serveurs avec l'utilisateur "service réseau"... Je crois que pour cette piste, c'est bon.

    par ailleurs, je vois qu'il y a un log pour le service DTC dans C:\WINDOWS\system32\MsDtc. J'y trouverai peut être la raison pour laquelle DTC veut bien fonctionner dans un cas et pas dans l'autre... Mais le fichier .log est en hexa... il y a un outil spécial pour le lire ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    hello,

    J'ai trouvé. Si cela intéresse qq1 :

    Mon problème était que j'avais un serveur en tant que membre d'un domaine et l'autre en workgroup.

    Manifestement, il n'est pas possible d'utiliser correctement DTC dans ce cas de figure. Même si le compte admin local sur les deux serveurs est le même (login/password); Même si les sql server sont configurés tous les en mode mixte; Même si MSDTC est configuré sur les deux serveurs avec "aucune authentification requise"...

    En ayant les deux serveurs en tant que membre du domaine, cela fonctionne.
    Je n'ai pas testé avec les deux machines en workgroup mais j'imagine que ça marche aussi...

    Malgré que cela fonctionne, je suis quand même embêté de devoir mettre le serveur en tant que membre du domaine. Quand mon projet passera en production, ce ne sera pas possible. Aussi, je me demande si qq1 en connait plus sur ce problème ??? et si je ne pourrais pas créer un compte utilisateur commun entre les deux serveurs qui serait utilisé pour que les sql server puissent communiquer sans devoir s'inquiéter ???

    nico

Discussions similaires

  1. [Link] Erreur 2005
    Par mambo dans le forum Visual C++
    Réponses: 13
    Dernier message: 18/08/2006, 13h44
  2. BD LINK erreur ORA-ORA-12154
    Par de LANFRANCHI dans le forum Oracle
    Réponses: 8
    Dernier message: 15/02/2005, 15h39
  3. erreur de link(age) g++
    Par corwin dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/05/2004, 11h33
  4. [wxWindows] Erreur de link pour ODBC
    Par ovh dans le forum wxWidgets
    Réponses: 3
    Dernier message: 28/01/2004, 15h38
  5. DirectDrawCreate erreur de link
    Par Ing_Ben dans le forum DirectX
    Réponses: 1
    Dernier message: 01/12/2002, 18h46

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