Von Holger Voges auf Freitag, 27. Mai 2016
Kategorie: Tipp

Datenbanken migrieren von mySQL zu SQL-Server

SQL-Server und mySql sind leider SQL-seitig nicht wirklich kompatibel. So gibt es zwar die Möglichkeit, eine Datenbank in mySQL als Script zu exportieren, aber leider kann man das Script auf dem SQL-Server nicht mehr für den Import benutzen. Der beste Weg für den Import führt daher über den SQL Server Migration Wizard. Der Migration Wizard steht für verschiedene Datenbanken zur Verfügung und hilft z.B. auch bei der Migration von Access-Datenbanken zu SQL-Server. Da das Tool recht komplex ist, möchte ich hier nur kurz zeigen, wie man eine einfach Migration durchführt, ohne auf die schmutzigen kleinen Details des Tools eingehen zu wollen. Ich verwende hierzu die derzeit aktuelle Version 6.0.1, 6.1 (für SQL-Server 2016) ist derzeit in der Beta-Phase.

Sie benötigen auf dem Rechner, auf dem Sie den SSMA einrichten wollen, zuerst einmal einen mySQL-ODBC-Treiber. Haben Sie die mySQL-Datenbank unter Windows auf dem gleichen Rechner installiert, dann müssen Sie nichts weiter machen, denn mySQL installiert den passenden ODBC-Treiber gleich mit. Ansonsten laden Sie den Treiber einfach bei mysql.com herunter. Nutzen Sie den 64-Bit Treiber, der SSMA wird nämlich auch in einer 64-Bit-Version installiert. Eine Konto für die Authentifizierung ist übrigens nicht notwendig, klicken Sie einfach auf den Link "No thanks, just start my download", wenn Sie nach Ihrem Login gefragt werden. Anschliessend installieren Sie den SSMA.

Wenn Sie den Migration Assistenten zum ersten Mal starten, müssen Sie ein Migrationsprojekt erstellen. Wählen Sie hierfür im Menü File "New Project" aus. Wichtig ist, dass Sie im folgenden Fenster das Migrationsziel auswählen. Standardmässig ist hier Azure angegeben. Leider können Sie das Ziel im Projekt selber dann nicht mehr ändern. Das kann ziemlich verwirrend sein!

Nun müssen Sie eine Verbindung zum Quell- und zum Zielsystem herstellen. Wählen Sie hierfür in der Toolbar zuerst "Connect to MySql". Wählen Sie im Verbindungsfenster den Provider aus - dies ist der ODBC-Treiber, den Sie installiert haben. Ist hier kein Treiber sichtbar, obwohl Sie einen Treiber installiert haben, dann prüfen Sie, ob Sie den Treiber und SSMA beide in der gleichen Version (32-Bit / 64-Bit) installiert bzw. gestartet haben. Außerdem benötigen Sie den Namen des Quellservers, den mySQL-Port (standardmässig 3306), sowie ein Konto mit Leserechten auf dem mySQL-System. 

Nun verbinden Sie sich mit dem SQL-Server. 

Im nächsten Schritt müssen Sie das Schema synchronisieren. Wählen Sie hierfür im mySQL Metadata Explorer die Datenbank(en) aus, die Sie migrieren möchten. Wenn Sie nur einzelne Tabellen oder Sichten migrieren möchten, können Sie die benötigten Objekte im Metadata-Explorere an- oder abwählen. Wenn die Zieldatenbank auf dem SQL-Server anders heißen soll als in MySQL, klicken Sie außerdem auf den Button Modify und geben Sie den Namen der Datenbank an. Anschliessend wählen Sie "Convert Schema" (1) in der Toolbar. Wenn alles glatt läuft, sehen Sie im Output-Fenster unten die Zieldatenbank. Der SSMA hat die Daten jetzt analysiert, allerdings noch keine Migration durchgeführt. 

Öffnen Sie im nächsten Schritt im SQL Server Metadata Explorer das Kontextmenü der zu migrierende Datenbank und wählen Sie "Synchronize with Database". Nun wird das Schema (die Datenbankobjekte, jedoch noch ohne Daten) im SQL-Server angelegt.

Jetzt müssen nur noch die Daten über den Button "Migrate Data" von mySQL zu SQL-Server konvertiert werden, und schon sind die Daten im SQL-Server.

Es gibt noch eine ganze Reihe von Optionen, die im SSMA gesetzt werden können, wie z.B. das Mapping der Datentypen (Reiter Type-Mapping). Eine Referenz zur Typkompatiblität finden Sie bei mysql unter Microsoft SQL Server Type Mapping. Für die Konvertierung von Timestamps habe ich den Artikel MySQL Timestamp in Datumswerte mit Powershell umwandeln geschrieben. Hier finden Sie auch eine Referenz zu Konvertierungsmöglichkeiten in anderen Script- und Programmiersprachen. 

Links:

How to Migrate a MySQL Database to SQL Server
http://www.alaskasql.org/Blog/Post/24/How-to-Migrate-a-MySQL-Database-to-SQL-Server

MySQL to SQL Server Migration: How to Use SSMA
https://blogs.msdn.microsoft.com/ssma/2011/02/07/mysql-to-sql-server-migration-how-to-use-ssma/

Verwandte Beiträge

Kommentare hinterlassen