![]() ![]() ![]() ![]() |
||||||||||||||||||||
Datenmigration von mySQL nach MSSQLGehen Sie die Beschreibung genau in der vorgegebenen Reihenfolge durch
Daten richtig stellenBevor man die Daten auf den MsSQL Server kopiert werden können müssen die Daten richtig gestellt werden. Es kann sein das z.B. Datumsfelder in MySQL falsch gespeichert wurden oder Felder mit NULL in der Datenbank sind. Dazu gibt es das Hilfsprogramm MySQL_Daten_korrigieren.lbr die man vor der Umstellung starten sollte um solchen Fehlern vorzubeugen. Linked Server anlegen um MySQL und MsSQL zu verbindenMicrosoft SQL Management Studio starten und diesen Script ausführen (Daten je nach ODBC Verbindung eintragen) Zu beachten ist das der Linked Server nur mit MySQL ODBC 5.1 funktioniert. Mit 3.51 kommen nicht alle Tabellen. EXEC master.dbo.sp_addlinkedserver @server = N'MYSQL5', @srvproduct=N'MySQL', @provider=N'MSDASQL', @provstr=N'DRIVER={MySQL ODBC 5.1 Driver}; SERVER=192.168.1.220; DATABASE=Kplus; USER=kplus; PASSWORD=kplus; OPTION=1048576' Script erzeugen zum einfügen der Daten in den MsSQLselect 'select * into MsSQL.dbo.' + upper(TABLE_NAME) + ' from openquery(MYSQL5, ''select * from MySQL.' + TABLE_NAME + ''')' from openquery(MYSQL5, 'SELECT * FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA='' MySQL''') Das Ergebnis kann man dann in eine neue Query Abfrage einfügen und ausführen. Sieht so aus. select * into MsSQL.dbo.D_ABTEILUNGEN from openquery(MYSQL5, 'select * from MySQL.d_abteilungen') select * into MsSQL.dbo.D_AKTIV from openquery(MYSQL5, 'select * from MySQL.d_aktiv') select * into MsSQL.dbo.D_AKTIV_BENUTZER from openquery(MYSQL5, 'select * from MySQL.d_aktiv_benutzer') select * into MsSQL.dbo.D_ANBPOS from openquery(MYSQL5, 'select * from MySQL.d_anbpos') Primary Key setzenWenn man dann alle Tabellen auf dem Microsoft SQL Server hat muss man pro Tabelle die SEQ auf Primary Key setzen. Bei meinen Tests wurde die Änderung blockiert. Wenn das passiert muss man im Managment Studion auf Tools->Optionen gehen und alles einstellen wie im Screenshot. Die Timeoutzeit muss man erhöhen damit bei großen Tabellen der Update ohne Fehler durchgeht. Rechtsklick auf die Tabelle -> Modify Rechtsklick auf die SEQ und Set Primary Key wählen(Schlüsselsymbol). Danach muss man unten noch bei Identity Specification -> Is Identity auf YES stellen. |
||||||||||||||||||||
Zum Seitenanfang |
![]() ![]() |
|||||||||||||||||||
|