# MySQL zu MSSQL



## Loki2 (6. Juli 2010)

Hallo

Ich habe habe eine MySQL Datenbank welche ich gerne zu MSSQL (MSSQL Server 2008 R2 Express) migrieren möchte.
Mir würde es völlig reichen wenn ich die Create Statements irgendwie migrieren lassen könnte. Kennt irgendwer entsprechende, am besten open-source / freeware Tools für so etwas?
Ich habe schon diverse kommerzielle Programme ausprobiert die sich aber entweder gar nicht starten ließen oder aber einfach keine Verbindung zur MSSQL Datenbank herstellen konnten. 
Diese Demo habe ich z.B. ausprobiert: "DRPU Database Converter -  MySQL to MS SQL" Ich habe es einfach nicht geschafft mich zur MSSQL DB zu verbinden, MySQL war kein Problem. Leider gab es auch keine vernünftige Fehlermeldung.

Ich hoffe es kann mir hier jemand weiter helfen.

Viele Grüße,
Loki2


----------



## Yaslaw (6. Juli 2010)

Kannst doch einfach mit phpMyAdmin die Tabellen als SQL exportieren und diese Dateien bei MS SQL importieren.

Oder hat MS SQL so speziefische Create-Statements?


----------



## Loki2 (6. Juli 2010)

So einfach ist es leider nicht, zumindest wenn Du in MySQL Sachen wie


```
"ID" int(11) unsigned NOT NULL auto_increment,
```

oder 


```
KEY "clientdata" ("vorname","nachname")
```

in Deinem Create Statement hast. Dies sieht bei MSSQL nämlich völlig anders aus :-(

Gruß und so,
Loki2


----------



## tomkruse (6. Juli 2010)

Es hängt natürlich jetzt sehr stark davon ab, wie umfangreich Deine Datenbank ist und ob Du Funktionalitäten wie Trigger oder StoredProcedures nutzt. Wenns "nur" Tabellen sind, dann KANN es nicht so ein besonderer Aufwand sein. 

Wenns nicht gerade hunderte Tabellen sind, könntest Du die Create-Statements notfalls sicher auch händisch oder mit Suchen/Ersetzen in einem Texteditor anpassen, bestenfalls mit einem der RegEx versteht, das wäre sicher hilfreich. 

Die Inserts aus MySQL-Dump müßten größtenteils passen, eventuell mußt Du die Anführungszeichen bei Strings ersetzen, DateTime-Werte anpassen und dergleichen, aber ansonsten sollte das soweit klappen.

Eine andere Idee die mir gerade kommt: Du könntest zuerst nach Oracle migrieren, da gibts einen kostenlosen Oracle Database Developer zum Runterladen und der hat auch Migrations-Funktionalität soweit ich weiß. Und von Oracle zu MS-SQL gehts vermutlich leichter. Sind ja die direkten Konkurrenten die sich gerne gegenseitig die Kunden wegschnappen. Entsprechend versuchen sie, denen den Umstieg auf ihre eigenen DB möglichst einfach und konstengünstig zu machen 

viele Grüsse

Thomas.


----------



## Alexander Schuc (6. Juli 2010)

Hoi.

Wenns nur um Tabellen geht, sollte der Import/Export Assistent vom SQL Server Management Studio ausreichend sein.

Einfach das Studio starten, zu deiner MSSQL Datenbank verbinden. Rechtsklick auf die DB, Tasks, Daten importieren.

Jetzt öffnet sich der Assistent. Als erstes musst die Datenquelle angeben. Damit du mit der MySQL DB arbeiten kannst, wirst den MySQL Connector installiert haben müssen. Gib die Verbindungsdaten an, und wähle die Datenbank aus, welche als Quelle dienen soll.
Beim nächsten Dialog kannst das Ziel angeben. Zuerst musst den Zielserver angeben, und danach die Datenbank in welche die Daten importiert weden sollen. Dies kann eine bereits existierende Datenbank sein, oder du kannst auch eine neue erstellen lassen.

Wenn du die Daten 1:1 übernehmen willst, wählst im nächsten Schritt "Daten aus mindestens einer Tabelle oder Sicht kopieren" aus, und gehst weiter. Jetzt kannst auswählen welche Tabellen übernommen werden sollen, wie die Zieltabellen benannt werden, und du kannst auch nochmal die Datentypen anpassen. Eine Vorschaumöglichkeit ist auch gegeben.

Als letztes folgt noch eine Schritt bei dem du einfach "Sofort ausführen" aktiviert lässt, und auf weiter klickst. Jetzt bekommst du noch eine Zusammenfassung angezeigt, und mit "Fertig stellen" wird der Vorgang gestartet.

Je nachdem ob du das lokal bei dir machst, oder über eine Datenbank im Internet wirds eine gewisse Zeit dauern.

Bei gewissen Datentypen könnts zwischen MySQL und MSSQL Probleme geben. Probiers einfach mal aus, wenns wo hakt machs nochmal und versuch das Problem bei der Auswahl der Tabellen und deren Einstellungen zu beheben.

Klappen sollte es jedoch. 
Ich hoff die Schritte unterscheiden sich nicht zu sehr wenn man einen MySQL Server abfragt. Hab keinen mehr in Verwendung, deswegen kann ichs nicht probieren. Hab aber vor einiger Zeit das selbe benutzt, um Daten von MySQL nach MS SQL zu migrieren.

Eine letzte Möglichkeit wäre noch, dass du den MySQL Server beim MS SQL Server als verlinkten Server einträgst und die ganzen Abfragen von Hand schreibst.. 


lg..


p.s.:
Schlüssel etc. wirst nur leider von Hand neu setzen müssen.


----------



## StupidBoy (6. Juli 2010)

Der Migrationsassistent ist aber in der Express Edition des SQL Managementstudios glaub ich nicht enthalten. Ggf. müsstest du dir also die Standard/Enterprise-Edition des Management Studios als Trial-Version besorgen.


----------



## Alexander Schuc (6. Juli 2010)

Ist dabei, verwende auch nur die Express Variante.


----------



## StupidBoy (6. Juli 2010)

Ok, dann hab ich mich geirrt.


----------



## Loki2 (7. Juli 2010)

Vielen Dank für eure Antworten und eure Hilfe.

Ich habe das mit einem Tool inzwischen hinbekommen, werde mir aber noch den Weg mit dem Studio anschauen falls ich das noch öfters brauchen sollte.

Gruß und so,
Loki2


----------



## Loki2 (7. Juli 2010)

Also ich habe das jetzt mal mit dem SQL Server Management Studio probiert nur leider ohne Erfolg 
Ich habe den ODBC MySQL Connector installiert und auch eine ODBC Datenquelle angelegt. Wenn ich diese teste funktioniert das auch.
Wenn ich in dem SQL Server Management Studio nun diese ODBC Verbindung nutzen möchte gebe ich beim DSN den entsprechenden Namen an. Das Feld für Connection URL wird automatisch gefüllt aber was muss bei Driver rein?
Wenn ich das Feld leer lasse bekomme ich eine Fehlermeldung dass der Driver nicht stimmen würde

Irgendeine Idee?

Vielen Dank.


----------

