domingo, 14 de febrero de 2010

Migrar esquema MySql a Base de datos SQL 2008

Buena, en un nuevo e interesante proyecto tengo que migrar un esquema de MySql a una base de datos MS SQL 2008 Server.

Esto lo he realizado de la forma larga que es instalando un MySQL, importando el script del esquema, y utilizando la herramienta SSMA 2008 for MySQL de Microsoft.

Este post está centrado en las dudas y problemas que he tenido en realizar los pasos antes descritos.

Paso nº 1.

  • Instalar el MySQL 5.1.34. Y darle al usuario root una contraseña de la que me acuerde.
  • Instalar las gui tools 5.0. r17.

En la instalación por defecto, el MySQL queda arrancado como un servicio windows.

Aquí me encuentro el primer “problema” . Que es cuando abro el MySql Administrator y me pide el nombre del host al que me quiero conectar…

image

… la solución es tan sencilla como inesperada para los que estamos acostumbrados a la excelente gestión automática de servidores de SQL Server. El nombre de la instancia es localhost y el usuario root. Más tarde podrás añadir los usuarios que necesites.

Una vez conectado seleccionas en Tools –> My Sql Query Browser, que es en donde gestionas los scripts de los esquemas.

Me ha encantado la función Drag & Drop en donde arrastrando una tabla de un esquema al editor de script, automáticamente te escribe la Select.

image

A continuación, en una ventana limpia cargo el script del esquema que quiero recuperar. Para ello selecciono File –> Open Script y selecciono el fichero .sql que más me convenga.

Y aquí llegamos al segundo impedimento que me encontré. El script, al lanzarlo, me devolvía un error indicando que no sabía que  base de datos utilizar. A lo que, utilizando lo de Drag & Drop, le señalé el esquema en donde desplegarlo. Poniéndome el solito la sentencia Use que necesitaba al principio del script.

Ya tengo mi esquema completito y toca migrarlo a SQL Server. Para ello busco en San Google y me encuentro una herramienta de Microsoft llamada SSMA 2008 for MySql que hace lo que yo quiero. La bajo y la instalo. Llegando a la siguiente detención en el proceso.

El instalador no encuentra ningún conector MySql en el sistema, pero me da la oportunidad de bajármelo de la Web de MySql. Entro en el Site y selecciono el fichero mysql-connector-net-6.2.2.zip y lo descargo sin registrarme (aunque debiera).

image

Por si las moscas, instalo el conector completo. Pero, por la ley de Murphy y por la manía de no leer las instrucciones, me he instalado el driver para .Net y lo que me pide la aplicación es un driver ODBC por lo cual me vuelvo a ir a la web de MySql y me bajo Connector-ODBC 5.1.6.

Cierro la instalación de SSMA y vuelvo a iniciarla encontrándome, ahora sí, el conector odbc. Como anteriormente, lo instalo completo no vaya a necesitar esa función extraña que nadie usa .

Siguiente impedimento: extrañado veo que el programa me pide que registre una licencia. Abro el enlace, y me valido con mi liveId, abriéndose un formulario de registro.

image

Cuando pulso el botón aceptar, la página me remite un fichero .license que supongo debo situar en el directorio que me señala la aplicación SSMA

image

Pulso el botón Refresh License y voala!! ya tengo mi aplicación registrada… (que curioso, no lo había tenido que hacer anteriormente más que en las licencias de pago)

image

Por fin se abre la ventana de Migración y creamos un nuevo proyecto de migración indicándole que el destino es una base de datos SQL Server.

image

Acto seguido me conecto a las dos bases de datos. Primero a la MySQL y segundo a la SQL 2008. Y aquí me encuentro con impedimento más: no tengo la posibilidad de realizar una búsqueda de las instancias de sql 2008, por lo cual tengo que abrir el SQL Manager y copiar el nombre de la instancia.

image

Y entonces también me doy cuenta que me obliga a meter la base de datos de destino… lo cual me recuerda que no la tengo echa!!. Asiqué aprovecho que tengo abierto el Sql Manager y me creo la base de datos destino para poder introducirla, después, en  la ventana de conexión del SSMA.

Y aquí viene un GRAN impedimento… no funciona con SQL 2008 Express :(

image

Pero para eso están las máquinas virtuales y más de una y más de dos tengo con algún SQL Server instalado… pero otra vez la Ley de Murphy aparece en toda su extensión y dos horas después aún me estoy pegando para que tener acceso a alguna instancia de un SQL 2008 server.

… unas horas más tarde aún me sigo pegando con las instancias de sql2008 a las que quiero tener acceso…

Bueno, finalmente he conseguido tener mi instancia de Sql 2008 server en funcionamiento y la cosa es tan simple como que hay dos únicos pasos.

1. Convertir el esquema, que pasa la estructura de la base de datos MySql a Sql Server.

2. Migrar datos.

Y con esto y un bizcocho, tengo replicada la base de datos MySql en Sql 2008 server.

image

4 comentarios:

Alex dijo...

He obrado con una infinidad sql files. Pero he casualmente chocado con - herramienta grafica sql 2005 reparar. El programa asombra gran cantidad las possibilidades. Por ejemplo el resurso ha restituido a mis .mdf ficheros corrompidos. Además el instrumento puede resolver este problema eficazmente y recuperar files.

Anónimo dijo...

Yo estoy con el y tengo un problema con la integridad referencial, ya que no consigo que cree las tablas en el orden necesario.

Anónimo dijo...

Para que no haya ningun problema de la migracion si no tienes las tablas en tu bd de sqlserver tienes que sincronizarlas, dar click derecho a la bd destino y sincronizar asi te generara las tablas y despues puedes dar click al boton migrar

Juan Quijano dijo...

Muchas gracias a todos por las aportaciones