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