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 :

mise à jour sur un serveur lié - transaction distribuée


Sujet :

Administration SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut mise à jour sur un serveur lié - transaction distribuée
    Bonjour

    J'ai besoin de d'aide au moins pour orienter mes recherches car je tourne en rond depuis quelques semaines sur un problème de serveur lié.

    Voilà l'idée est simple j'ai d'un côté une base de données sql server 2005 et de l'autre une base mysql. je tente à l'aide d'un déclencheur sur une table sql server 2005 de mettre à jour ma base mysql.

    Pour cela j'utilise le déclencheur suivant dans sqlserver 2005 (attention déclencheur de table)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ALTER TRIGGER [dbo].[trg_test_insert]
       ON  [dbo].[table1]
       AFTER  INSERT
    AS 
    BEGIN
        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        SET NOCOUNT ON;
        -- Insert statements for trigger here
        SET XACT_ABORT ON 
        INSERT INTO OPENQUERY (MONSERVERMYSQL, 'select * from dbautorite.autretable')
        SELECT Id,nom,code FROM INSERTED;
    END
    Ensuite si sur ce serveur je lance l'ordre suivant, j'obtiens bien les données du serveur mysql (si je fais un ordre insert, çà fonctionne aussi)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * from 
    OPENQUERY (MONSERVERMYSQL, 'select id, Nom, code from dbautorite.autretable')
    par contre si je titille le trigger de ma table MSSQL2005 en faisant un insert pour qu'il mette à jour la base MYSQL alors j'obtiens l'erreur suivante.

    Le fournisseur OLE DB "MSDASQL" du serveur lié "MONSERVERMYSQL" a retourné le message "[MySQL][ODBC 5.1 Driver]Optional feature not supported".
    Msg*7391, Niveau*16, État*2, Procédure*trg_test_insert, Ligne*21
    L'opération n'a pas pu être effectuée, car le fournisseur OLE DB "MSDASQL" du serveur lié 'MONSERVERMYSQL' n'a pas réussi à démarrer une transaction distribuée.


    Voilà qu'en pensez vous en sachant que quelque chose arrive sur le serveur mysql. J'ai (on m'a aidé) vérifié par un tail pour surveiller les requêtes qui sont lancées.

    Merci d'avance pour votre aide

  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,

    Comment avez-vous configuré les options de votre serveur lié ?

    @++

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut
    Bonjour,

    Voilà j'ai généré un script de création à partir de mon serveur lié. et en dessous il y a les options du fournisseur MSDASQL

    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
    /****** Objet*:  LinkedServer [MONSERVERMYSQL]    Date de génération du script*: 11/27/2008 08:57:22 ******/
    EXEC master.dbo.sp_addlinkedserver @server = N'MONSERVERMYSQL', @srvproduct=N'mysql', @provider=N'MSDASQL', @provstr=N'DRIVER=MySQL ODBC 5.1 Driver;UID=dbautorite;Pwd=xxxxxxxxxxxx;PORT=3306;DATABASE=dbautorite;SERVER=172.28.xxx.xxx;Option=131072'
     /* For security reasons the linked server remote logins password is changed with ######## */
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'MONSERVERMYSQL',@useself=N'True',@locallogin=N'sa',@rmtuser=NULL,@rmtpassword=NULL
     
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'collation compatible', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'data access', @optvalue=N'true'
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'dist', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'pub', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'rpc', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'rpc out', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'sub', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'connect timeout', @optvalue=N'0'
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'collation name', @optvalue=null
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'lazy schema validation', @optvalue=N'false'
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'query timeout', @optvalue=N'0'
    GO
    EXEC master.dbo.sp_serveroption @server=N'MONSERVERMYSQL', @optname=N'use remote collation', @optvalue=N'true'
    les options du fournisseurs sont les suivantes :

    Tout est coché sauf "interdire l'accès ad hoc". Pour l'instant j'ai décoché "mises à jour non transactionnelles" mais de toute fàçon j'ai essayé lorsqu'elle était cochée.
    Voilà que dire de plus ? J'ai l'impression que c'est un problème de support des transactions distribuées ou quelque chose dans le genre. Côté Mysql il n'y a rien de spécial à part que les tables sont en InnoDB mais c'est censé fonctionner aussi en MyISAM, d'après le tuto.
    En tout cas merci d'avance.

  4. #4
    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,

    Je ne suis pas sûr que ce soit l'origine de votre problème, mais est-ce que MSDTC est actif sur votre machine ?

    => Démarrer / Exécuter / C:\WINDOWS\system32\Com\comexp.msc
    - double-cliquer sur Services de composants
    - cliquez sur l'icône d'ordinateur se trouvant dans la barre d'outils
    - rendez-vous dans l'onglet MSDTC
    - regardez si utiliser un coordinateur local est cochée
    - vérifiez les paramètres de sécurité derrière le bouton configuration de la sécurité

    J'espère que je vous ai correctement guidé sur MSDTC

    @++

  5. #5
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut
    Oui j'avais déjà vérifié si ce service était démarré.
    j'ai bien coché la case coordinateur local. Les transactions xa sont activées et j'autorise les transactions entrantes et sortantes.

Discussions similaires

  1. [AC-2007] Recherche de mise à jour sur serveur ftp
    Par Oxopor dans le forum Runtime
    Réponses: 2
    Dernier message: 01/12/2011, 23h20
  2. Réponses: 4
    Dernier message: 11/07/2007, 16h23
  3. Réponses: 8
    Dernier message: 14/02/2007, 10h37
  4. Réponses: 13
    Dernier message: 27/11/2006, 11h17
  5. [Tomcat]erreur lors de la mise service sur le serveur
    Par dietrich dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 22/01/2006, 07h13

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