Benutzer mit den meisten Antworten
Synchronisation zwischen MS SQL Server und MySQL Datenbank(inkrementell)

Frage
Antworten
-
Der direkte Abgleich ist in der Regel nur möglich, wenn es eine Möglichkeit vom SQL Server aus gibt, auf den MySQL Server zuzugreifen. In dem Fall könnte man bspw. einen Linked Server von MS SQL zu MySQL erstellen und dann damit arbeiten.
Je nach Struktur ist der Abgleich dann ggfs. mit einfachen Mitteln über ein paar SQL Statements machbar. Hierfür müsste man aber genauer wissen, wie die Tabellen aufgebaut sind, ob es bspw. Datum/Uhrzeit Spalten gibt, die das letzte Änderungsdatum eines jeden Datensatzes enthalten bzw. wie man auf MS SQL Ebene die Datensatzmenge auf die, die zuletzt angelegt, geändert und gelöscht wurden, eingrenzen kann.
Je nach Datenmenge kann man natürlich auch einfach einen vollständigen Abgleich durchführen. Aber auch hier: Poste bitte mal ein Beispiel für die Tabellen auf beiden Seiten und die Infos bzgl. Datenmengen.
Tools gibt es mehrere, bspw.:
Microsoft SQL Server to MySQL Conversion & Sync
Ansonsten schau ggfs. auch mal hier:
Synchronize data from MSSQL to MySQL
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Montag, 18. November 2019 11:41
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Mittwoch, 27. November 2019 13:05
Alle Antworten
-
Hallo René,
was genau willst Du denn vergleichen? Struktur? Daten? Beides? In welche Richtung(en)?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Der direkte Abgleich ist in der Regel nur möglich, wenn es eine Möglichkeit vom SQL Server aus gibt, auf den MySQL Server zuzugreifen. In dem Fall könnte man bspw. einen Linked Server von MS SQL zu MySQL erstellen und dann damit arbeiten.
Je nach Struktur ist der Abgleich dann ggfs. mit einfachen Mitteln über ein paar SQL Statements machbar. Hierfür müsste man aber genauer wissen, wie die Tabellen aufgebaut sind, ob es bspw. Datum/Uhrzeit Spalten gibt, die das letzte Änderungsdatum eines jeden Datensatzes enthalten bzw. wie man auf MS SQL Ebene die Datensatzmenge auf die, die zuletzt angelegt, geändert und gelöscht wurden, eingrenzen kann.
Je nach Datenmenge kann man natürlich auch einfach einen vollständigen Abgleich durchführen. Aber auch hier: Poste bitte mal ein Beispiel für die Tabellen auf beiden Seiten und die Infos bzgl. Datenmengen.
Tools gibt es mehrere, bspw.:
Microsoft SQL Server to MySQL Conversion & Sync
Ansonsten schau ggfs. auch mal hier:
Synchronize data from MSSQL to MySQL
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Montag, 18. November 2019 11:41
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Mittwoch, 27. November 2019 13:05
-
Der Zugriff über Linked-Server ist wohl die Voraussetzung.
Zum Abgleich gibt es 2 Methoden:
Man liest die Daten einer Zeile und macht einen Concat über alles und vergleicht dieses mit der Zieltabelle.
Dies würde aber beide Tabellen komplett verarbeiten müssen.Oder man fügt den Tabellen Trigger hinzu (Insert/Update/Delete) um die ID's (Primary/UniqueKey) und Art (I/U/D) in einer Logtabelle zu protokollieren. Dies geht dann z.B. relativ einfach per "Insert into LogTable (Id, Art) select Id, 'I' from inserted".
Der Syncprozess brauch dann nur noch die Logtabelle (per distinct, da Mehrfachänderungen auftraten können) abzuarbeiten und per Linkedserver zu übertragen.