sql >> Databasteknik >  >> RDS >> Mysql

Hur man migrerar MS SQL-databas som körs på fjärrmaskin till min lokala MySQL-databas som körs på linux, bevara kodning

Med MySQL Workbench har jag provat dessa kombinationer, ingen av dem fungerade:

fjärrstyrd MS SQL> fjärrstyrd MySQL inbyggd ODBC-drivrutin

fjärrstyrd MS SQL> fjärrdrivrutin för MySQL ODBC DataSource

fjärrstyrd MS SQL> fjärrstyrd MySQL freeTDS ODBC-drivrutin (med eller utan UTF-8)

virtual MS SQL> virtuell MySQL inbyggd ODBC-drivrutin

virtuell MS SQL> virtuell MySQL ODBC DataSource-drivrutin

virtuell MS SQL> virtuell MySQL freeTDS ODBC-drivrutin (med eller utan UTF-8)

I något av dessa fall fastnade antingen migreringsprocessen (Icke-svarande Workbench) eller så överfördes inte tecken på rätt sätt.

Den totala tiden för försök och fel var cirka 12 timmar.

Här delar jag med dig ett sätt hur jag lyckades migrera hela MS SQL-databasen till min lokala MySQL-server som körs på min dev-maskin.

Eftersom jag anslöt till den fjärranslutna W10-maskinen via Remote Desktop Connection (RDC) från min VirtualBox-maskin, ville jag först ta bort det här extra steget för att göra saker enklare.

  1. om du inte har det ännu, ladda ner och installera gratis Virtual Box-maskin som Microsoft erbjuder och starta den

  2. från denna virtuella maskin starta RDC och innan du ansluter, lägg till lokal disk på den virtuella maskinen för att vara tillgänglig på fjärrdatorn

  3. på fjärrmaskin starta SQL Server management studio och skapa en säkerhetskopia av databasen (Högerklicka på önskad databas, Uppgifter> Säkerhetskopiering..., spara säkerhetskopia på disken)

  4. kopiera denna säkerhetskopia till din enhet på virtuell maskin genom att navigera till nätverk och ladda upp filen till C:-enhet på din virtuella maskin

  5. installera på din virtuella maskin MS SQL server, Express edition som är gratis, tillsammans med SQL Server Management Studio (jag har laddat ner 2014 version)

  6. skapa ny databas och välj Uppgifter...> Återställ> Databas..., välj filen du laddade upp till din virtuella maskin, välj Skriv över den befintliga databasen..

  7. skapa ny inloggning för din MS SQL-server (högerklicka på Inloggningar), välj önskad inloggning och lösenord, tilldela en sysadmin-roll, bara för att göra saker enklare, eftersom detta är en engångsmigreringsprocess

  8. installera senaste MySQL Workbench på din lokala Linux-värddator, jag antar att MySQL-databasen redan körs lokalt, om inte, installera den

  9. eftersom du använder Linux behöver du ett extra steg för att installera FreeTDS ODBC-drivrutinen på ditt system, om detta länk, hur man installerar FreeTDS-drivrutinen på Linux går död, sök efter Database Migration Wizard / Microsoft SQL Server-migrering i MySQL Workbench-manualen

  10. ställ in virtuell maskin så att den är tillgänglig från ditt Linux-värdsystem, det har jag gjort genom att välja Bifogad till:Överbryggad adapter och välja wlan0 i inställningarna för den virtuella maskinen

  11. starta virtuell maskin och välj IP-intervall från samma nätverk som din adapter använder

  12. på din virtuella maskin lägg till en brandvägsregel för MS SQL-servern eller stäng av brandväggen tillfälligt

Från och med nu görs allt på din lokala Linux-maskin med virtuell maskin igång

  1. starta MySQL Workbench' Database Migration, välj MS SQL som källmaskin, ange korrekt IP-adress som du ställt in i din virtuella maskin tidigare

  2. som en måldatabas, använd dina lokala MySQL-databasinställningar och autentiseringsuppgifter

  3. i steget Alternativ för målskapande, välj endast Skapa en SQL-skriptfil och välj Behåll scheman om de redan avslutas.

  4. gå igenom nästa steg tills du når Data Transfer Setup. Där väljer du Online kopia av tabell... men tryck inte på Nästa

  5. redigera skriptet som sparats i steg 15.:

ta bort:

CREATE SCHEMA IF NOT EXISTS `Test` ;

lägg till:

CREATE DATABASE `Test` DEFAULT CHARACTER SET utf16 COLLATE utf16_czech_ci;

ändra alla skapa tabelldefinitioner genom att lägga till önskad teckenuppsättning och sortering till tabelldefinitionen:

CREATE TABLE IF NOT EXISTS `TestTable` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf16_czech_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf16 COLLATE=utf16_czech_ci;
  1. kör detta uppdaterade skript i din MySQL-databas

  2. gå till nästa steg i MySQL Workbench och data bör importeras korrekt

Det kan finnas några steg som inte uttryckligen anges, vänligen meddela mig i kommentarerna om du behöver några förtydliganden




  1. Var loggas SQL Server-anslutningsförsök?

  2. foreach %dopar% + RPostgreSQL

  3. MySQL fel nr 121

  4. SQLite returnerade en felkod på 14