sql >> Base de Datos >  >> RDS >> Mysql

Cómo migrar la base de datos MS SQL que se ejecuta en una máquina remota a mi base de datos MySQL local que se ejecuta en Linux, conservando la codificación

Usando MySQL Workbench, probé estas combinaciones, ninguna de ellas funcionó:

MS SQL remoto> controlador ODBC nativo de MySQL remoto

MS SQL remoto> Controlador remoto MySQL ODBC DataSource

MS SQL remoto> Controlador ODBC freeTDS de MySQL remoto (con o sin UTF-8)

MS SQL virtual> controlador ODBC nativo de MySQL virtual

MS SQL virtual> controlador de fuente de datos ODBC de MySQL virtual

MS SQL virtual> Controlador ODBC freeTDS de MySQL virtual (con o sin UTF-8)

En cualquiera de esos casos, el proceso de migración se atascó (Workbench no responde) o los caracteres no se transfirieron correctamente.

El tiempo total de prueba y error fue de alrededor de 12 horas.

Aquí estoy compartiendo con ustedes una forma en que pude migrar con éxito toda la base de datos de MS SQL a mi servidor MySQL local que se ejecuta en mi máquina de desarrollo.

Como me estaba conectando a la máquina W10 remota a través de la conexión de escritorio remoto (RDC) desde mi máquina VirtualBox, al principio quería eliminar este paso adicional para facilitar las cosas.

  1. si aún no lo tiene, descargue e instale máquina Virtual Box gratuita que ofrece Microsoft y empezar

  2. desde esta máquina virtual, inicie RDC y, antes de conectarse, agregue un disco local en la máquina virtual para que esté disponible en la máquina remota

  3. en una máquina remota, inicie SQL Server Management Studio y cree una copia de seguridad de la base de datos (haga clic con el botón derecho en la base de datos deseada, Tareas> Copia de seguridad..., guarde el archivo de copia de seguridad en el disco)

  4. copie este archivo de copia de seguridad en su unidad en la máquina virtual navegando a Redes y cargando el archivo en la unidad C:en su máquina virtual

  5. instale en su máquina virtual MS SQL server, edición Express que es gratuita, junto con SQL Server Management Studio (he descargado la versión 2014)

  6. cree una nueva base de datos y seleccione Tareas...> Restaurar> Base de datos..., seleccione el archivo que cargó en su máquina virtual, seleccione Sobrescribir la base de datos existente..

  7. cree un nuevo inicio de sesión para su servidor MS SQL (haga clic con el botón derecho en Inicios de sesión), seleccione el inicio de sesión y la contraseña deseados, asigne un rol de administrador del sistema, solo para facilitar las cosas, ya que este es un proceso de migración único

  8. en su máquina Host Linux local, instale la última versión de MySQL Workbench, supongo que la base de datos MySQL ya se está ejecutando localmente, si no, instálela

  9. debido a que está en Linux, necesitará un paso adicional para instalar el controlador ODBC de FreeTDS en su sistema, si esto enlace, cómo instalar el controlador FreeTDS en Linux deja de funcionar, busque Asistente de migración de base de datos/migración de Microsoft SQL Server en el manual de MySQL Workbench

  10. configure la máquina virtual para que sea accesible desde su sistema Host Linux, lo he hecho seleccionando Adjunto a:adaptador puenteado y eligiendo wlan0 en la configuración de la máquina virtual

  11. inicie la máquina virtual y seleccione el rango de IP de la misma red que usa su adaptador

  12. en su máquina virtual, agregue una regla de firewall para el servidor MS SQL o desactive temporalmente el firewall

De ahora en adelante, todo se hace en su máquina Linux local con la máquina virtual en ejecución

  1. inicie la migración de la base de datos de MySQL Workbench, seleccione MS SQL como máquina de origen, ingrese la dirección IP correcta que configuró en su máquina virtual antes

  2. como base de datos de destino, utilice la configuración y las credenciales de su base de datos MySQL local

  3. en el paso Opciones de creación de destino, seleccione solo Crear un archivo de script SQL y seleccione Conservar esquemas si ya existen.

  4. siga los siguientes pasos hasta llegar a Configuración de transferencia de datos. Allí seleccione Copia en línea de la tabla... pero no presione Siguiente

  5. edite el script guardado en el paso 15.:

eliminar:

CREATE SCHEMA IF NOT EXISTS `Test` ;

añadir:

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

modifique todas las definiciones de tablas creadas agregando el juego de caracteres y la intercalación deseados a la definición de la tabla:

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. ejecute este script actualizado en su base de datos MySQL

  2. vaya al siguiente paso en MySQL Workbench y los datos deberían importarse correctamente

Puede haber algunos pasos que no se indiquen explícitamente, por favor, hágamelo saber en los comentarios si necesita alguna aclaración