2009-02-10 9 views
2

je besoin de copier plusieurs tables en gros à partir d'un SQL tiers serveur base de données 2000 à une base de données MySQL 5 et les garder synchronisés - à savoir, lorsque certains CRUD arrive sur les tables SQL Server, J'aimerais que cela se reflète dans les versions de MySQL en temps opportun. Maintenant, je sais qu'il y a ways to do this with 2000, mais dans un avenir proche, la base de données SQL Server sera mise à niveau vers 2005, ce qui ne semble pas offrir les mêmes failles que 2000 le fait.SQL Server 2005 Synchronisation avec MySQL

Alors, est-il un moyen de répliquer/synchroniser les données de SQL Server 2005 à MySQL qui ne me comporte pas la comparaison des tables dans les deux bases de données par programmation? Si oui, cela fonctionnera-t-il également avec SQL Server 2000?

Répondre

1

Suggestions for replication of data from MS Sql 2005 and MySql

Une personne suggère pas de jouer avec un tel système et la mise en place d'un autre serveur SQL.

SQL Express a certaines contraintes sur les performances, mais c'est peut-être une option pour vous. Je ne trouve rien qui puisse fonctionner, hors de la boîte.

0

Je l'ai déjà fait, même si cela dépend complètement de votre définition de temps!

I utilisé myodbc (http://dev.mysql.com/downloads/connector/odbc/5.1.html) pour configurer le serveur MYSQL comme serveur lié. Vous pouvez ensuite utiliser la commande openquery (http://msdn.microsoft.com/en-us/library/ms188427.aspx) pour obtenir les données de la table distante.

Tout ce que vous devez alors faire est d'écrire une procédure stockée qui fait un insert/mise à jour où existe pas les données de la base de données distante. Le SQL est un peu méchant mais c'est faisable! Une fois que vous avez un SP qui fonctionne, vous pouvez le configurer pour qu'il fonctionne comme un trigger quelque part ou l'exécuter comme un travail dans le serveur MSSQL.

0

Je vais aussi proposer connecting SQL Server to MySQL via Linked Server. Ensuite, créez les déclencheurs AFTER sur les tables liées qui utilisent INSERTED et les tables psuedo SUPPRIMÉES pour garantir que toutes les opérations locales sont répercutées sur les bases de données distantes. Par exemple:

CREATE TRIGGER tr_Orders_Insert ON Orders AFTER INSERT AS 
    BEGIN 
     INSERT INTO MySQLServer...Orders (OrderID, OrderDate) 
     SELECT OrderID, OrderDate FROM INSERTED 
    END 
GO