En el mundo de la gestión de bases de datos, la necesidad de interactuar o migrar datos entre diferentes plataformas es una tarea común. Una de las combinaciones frecuentes es la conexión entre Microsoft SQL Server y MySQL. Ya sea que necesites migrar una base de datos existente de MySQL a SQL Server o a Azure SQL, o simplemente necesites obtener metadata para planificar una integración, contar con la herramienta adecuada y conocer el proceso es fundamental. SQL Server Migration Assistant (SSMA) para MySQL es la herramienta diseñada específicamente para facilitar esta tarea compleja, permitiendo obtener metadata, convertir esquemas y, finalmente, migrar datos.
https://www.youtube.com/watch?v=0gcJCdgAo7VqN5tD
La conexión entre SQL Server y MySQL a través de SSMA no es una simple conexión de cliente para consulta, como podría ser usar MySQL Workbench para conectar a MySQL. Se trata de una conexión orientada a la migración y la interacción a un nivel más profundo con la estructura de la base de datos de origen (MySQL) para entenderla y prepararla para su destino (SQL Server o Azure SQL). Este proceso implica obtener información detallada sobre todos los esquemas y objetos de MySQL, lo cual SSMA muestra en su panel del Explorador de Metadatos de MySQL.

¿Por Qué Conectar SQL Server a MySQL Usando SSMA?
La principal razón para establecer esta conexión mediante SSMA es la migración. SSMA automatiza gran parte del proceso de mover una base de datos de MySQL a SQL Server o Azure SQL. Esto incluye:
- Obtener el esquema y los datos de la base de Datos MySQL.
- Convertir el esquema de MySQL a una sintaxis compatible con SQL Server.
- Cargar los objetos convertidos en SQL Server.
- Migrar los datos de MySQL a SQL Server.
Sin una herramienta como SSMA, realizar una migración compleja manualmente sería una tarea ardua y propensa a errores, requiriendo la reescritura manual de definiciones de tablas, vistas, procedimientos almacenados, funciones y otros objetos.
Permisos Necesarios en MySQL
Para que SSMA pueda conectarse correctamente a la base de datos MySQL y obtener la metadata necesaria para la migración, el usuario de MySQL utilizado para la conexión debe contar con ciertos permisos. Estos permisos aseguran que SSMA pueda leer las definiciones de los objetos de la base de datos. El requisito mínimo es el permiso CONNECT, que permite a SSMA obtener metadata de los esquemas propiedad del usuario que se conecta.
Sin embargo, para obtener metadata de objetos en otros esquemas y poder convertir esos objetos para la migración, la cuenta de usuario debe tener permisos adicionales. Los permisos clave son:
- SHOW privileges en los objetos de la base de datos. Este permiso permite a SSMA ver la estructura y definiciones de tablas, vistas, procedimientos, etc.
- SELECT privilege en la base de datos 'information_schema'. Esta base de datos del sistema en MySQL contiene metadata sobre todas las bases de datos, tablas, columnas, etc., a las que el usuario tiene acceso. SSMA la utiliza extensivamente para recolectar información.
- SELECT privilege en la base de datos 'mysql', específicamente para funciones definidas por el usuario (UDFs). La base de datos 'mysql' contiene información sobre usuarios, permisos y otras funciones del sistema, incluyendo UDFs.
Asegurarse de que el usuario de MySQL tenga estos permisos es un paso crítico antes de intentar la conexión con SSMA.
Estableciendo la Conexión a MySQL con SSMA
El proceso de conexión en SSMA es directo una vez que se ha creado un proyecto de migración (por ejemplo, un proyecto MySQL a SQL Server). Es importante asegurarse de que el servidor de base de datos MySQL esté en ejecución y sea accesible desde la máquina donde SSMA está instalado.
Los pasos generales son los siguientes:
- Dentro de SSMA, una vez que el proyecto está abierto, ve al menú 'File'.
- Selecciona la opción 'Connect to MySQL'. Si ya te has conectado previamente en la misma sesión del proyecto, la opción puede aparecer como 'Reconnect to MySQL'.
- En el cuadro de diálogo de conexión, selecciona el 'Provider'. El proveedor por defecto y recomendado es 'MySQL ODBC 5.1 Driver (trusted)' en modo estándar.
- En el cuadro 'Mode', selecciona 'Standard mode' (el modo por defecto). Este modo te permite especificar directamente los detalles del servidor.
- Proporciona los valores necesarios en el modo estándar:
- 'Server name': Ingresa el nombre del host o la dirección IP del servidor MySQL.
- 'Server port': Ingresa el número de puerto. El puerto por defecto para MySQL es 3306.
- 'User name': Ingresa el nombre de la cuenta de usuario de MySQL con los permisos necesarios.
- 'Password': Ingresa la contraseña para el usuario especificado.
- Opcionalmente, configura una conexión segura.
Configuración de Conexión Segura (SSL/TLS)
Para conectar de forma segura a MySQL utilizando TLS o SSL (Secure Socket Layer), puedes marcar la casilla 'SSL'. Si marcas esta opción, se habilitará el botón 'Configure', permitiéndote especificar la configuración de SSL/TLS. Al hacer clic en 'Configure', aparecerá un cuadro de diálogo donde deberás proporcionar las rutas a tres archivos de certificado en formato PEM (Privacy Enhanced Mail):
- 'SSL Certificate Authority': Especifica la ruta al archivo que contiene una lista de CAs (Certificate Authorities) de confianza.
- 'SSL Certificate': Especifica el nombre del archivo de certificado SSL a utilizar para establecer la conexión segura.
- 'SSL Key': Especifica el nombre del archivo de clave SSL a utilizar para establecer la conexión segura.
El botón 'OK' en el cuadro de diálogo de configuración de SSL se habilitará solo cuando se hayan proporcionado rutas válidas para los archivos requeridos. Si alguna ruta es inválida, el botón permanecerá deshabilitado. El botón 'Cancel' cierra el cuadro de diálogo y desactiva la opción SSL en el formulario principal de conexión.
Una vez que hayas ingresado todos los detalles de conexión, incluidos los de SSL si aplica, haz clic en 'Connect' o 'OK' (dependiendo de la versión de SSMA) para establecer la conexión.
Manejo de la Metadata
Cuando SSMA se conecta a la base de datos MySQL, lee la metadata de los objetos de la base de datos y la añade al archivo del proyecto SSMA. Esta metadata es crucial, ya que SSMA la utiliza para:
- Analizar la estructura y dependencias de los objetos de MySQL.
- Convertir la sintaxis de los objetos de MySQL a la sintaxis de SQL Server o Azure SQL.
- Generar los scripts de SQL Server para crear los objetos de la base de datos de destino.
- Planificar y ejecutar la migración de datos.
La metadata obtenida se muestra en el panel 'MySQL Metadata Explorer' dentro de SSMA, permitiéndote explorar las bases de datos, esquemas, tablas, vistas, procedimientos almacenados, etc., y revisar sus propiedades.
Persistencia de la Conexión y la Metadata
Es importante saber que la conexión a la base de datos MySQL permanece activa mientras el proyecto SSMA esté abierto. Sin embargo, si cierras el proyecto y lo vuelves a abrir, deberás reconectar manualmente si necesitas una conexión activa (por ejemplo, para refrescar metadata o migrar datos). Puedes trabajar sin conexión con la metadata que SSMA cargó previamente, pero no podrás ver cambios recientes en la base de datos de origen ni realizar acciones que requieran interacción con el servidor MySQL.
La metadata en el 'MySQL Metadata Explorer' no se actualiza automáticamente. Es una instantánea de la base de datos en el momento de la conexión inicial o de la última vez que la refrescaste manualmente.

Refrescando la Metadata de MySQL
Si se han realizado cambios en la estructura de la base de datos MySQL de origen (por ejemplo, se añadieron nuevas tablas, se modificaron columnas, etc.) después de la conexión inicial o la última actualización, deberás refrescar manualmente la metadata en SSMA para reflejar esos cambios. Esto garantiza que SSMA esté trabajando con la información más reciente de la base de datos de origen.
Para refrescar la metadata:
- Asegúrate de estar conectado a la base de datos MySQL en SSMA.
- En el panel 'MySQL Metadata Explorer', selecciona la casilla de verificación junto a cada esquema o objeto de base de datos específico que deseas actualizar. También puedes seleccionar la carpeta 'Schemas' para refrescar todos los esquemas.
- Haz clic derecho en la selección (ya sea 'Schemas', un esquema individual o un objeto específico) y selecciona la opción 'Refresh from Database'.
- Si no tienes una conexión activa, SSMA te pedirá que te conectes antes de proceder.
- En el cuadro de diálogo 'Refresh from Database' que aparece, puedes especificar con mayor detalle qué objetos dentro de tu selección deseas refrescar.
- Para refrescar un objeto, haz clic en el campo 'Active' junto al objeto hasta que aparezca una flecha (indicando que se incluirá en el refresco).
- Para evitar que un objeto se refresque, haz clic en el campo 'Active' hasta que aparezca una 'X'.
- Puedes aplicar estas selecciones a categorías completas de objetos (por ejemplo, todas las tablas dentro de un esquema).
- El diálogo puede mostrar un código de colores para indicar el estado de los objetos; puedes ver la leyenda para entender su significado.
- Una vez que hayas seleccionado los objetos a refrescar, haz clic en 'OK'.
SSMA se conectará a MySQL (si no lo estaba ya) y recuperará la metadata actualizada para los objetos seleccionados.
Preguntas Frecuentes
¿Qué es SSMA para MySQL?
SSMA para MySQL es una herramienta de Microsoft diseñada para automatizar la migración de bases de datos desde MySQL a SQL Server o Azure SQL Database. Ayuda en la evaluación, conversión de esquemas, carga de objetos y migración de datos.
¿Necesito instalar algo en el servidor MySQL?
No necesitas instalar SSMA en el servidor MySQL. SSMA se instala en una máquina cliente desde la cual te conectarás remotamente al servidor MySQL.
¿Qué versión de MySQL es compatible con SSMA?
La compatibilidad específica depende de la versión de SSMA que estés utilizando, pero generalmente SSMA para MySQL soporta versiones recientes y anteriores de MySQL.
¿La conexión SSMA a MySQL es solo para migración?
Aunque su propósito principal es la migración, la conexión permite explorar la estructura y metadata de la base de datos MySQL, lo cual es útil para tareas de evaluación y planificación incluso si la migración completa no es el objetivo inmediato.
¿La contraseña de MySQL se guarda en el proyecto SSMA?
No, SSMA almacena información sobre el servidor y la base de datos, pero no guarda la contraseña del usuario de MySQL. Deberás proporcionarla cada vez que necesites establecer una conexión activa si no la guardaste en el gestor de credenciales de tu sistema operativo (si SSMA ofrece esa opción).
¿Qué hago si la conexión falla?
Verifica que el servidor MySQL esté en ejecución, que el nombre/IP y puerto sean correctos, que el usuario y contraseña sean válidos, que el usuario tenga los permisos necesarios y que no haya firewalls bloqueando la conexión entre la máquina cliente y el servidor MySQL. Si usas SSL, verifica que las rutas a los certificados sean correctas.
Conclusión
Conectar SQL Server a MySQL, especialmente en el contexto de una migración, es un proceso que se simplifica enormemente con el uso de SQL Server Migration Assistant (SSMA). Entender los permisos requeridos, saber cómo establecer la conexión (incluyendo opciones de seguridad como SSL/TLS) y manejar la metadata son pasos esenciales para garantizar una interacción exitosa y preparar el camino para una migración eficiente. SSMA actúa como el puente, permitiendo que SQL Server 'comprenda' la estructura de MySQL. Al dominar estos pasos, estarás bien equipado para trabajar con datos a través de estas dos populares plataformas de bases de datos.
Si quieres conocer otros artículos parecidos a Conecta SQL Server a MySQL: Guía con SSMA puedes visitar la categoría Bases de datos.

Aprende mas sobre MySQL