Conversión de SQL Server a MySQL - AWS Schema Conversion Tool

Conversión de SQL Server a MySQL

Para simular las funciones de la base de datos de Microsoft SQL Server en código MySQL convertido, utilice el paquete de extensión de SQL Server a MySQL en AWS SCT. Para obtener más información acerca de los paquetes de extensión, consulte Uso de paquetes de extensión con AWS Schema Conversion Tool.

Privilegios para MySQL como base de datos de destino

Los privilegios necesarios para MySQL como destino se enumeran a continuación:

  • CREATE ON *.*

  • ALTER ON *.*

  • DROP ON *.*

  • INDEX ON *.*

  • REFERENCES ON *.*

  • SELECT ON *.*

  • CREATE VIEW ON *.*

  • SHOW VIEW ON *.*

  • TRIGGER ON *.*

  • CREATE ROUTINE ON *.*

  • ALTER ROUTINE ON *.*

  • EXECUTE ON *.*

  • INSERT, UPDATE ON AWS_SQLSERVER_EXT.*

  • INSERT, UPDATE, DELETE ON AWS_SQLSERVER_EXT_DATA*.

  • CREATE TEMPORARY TABLES ON AWS_SQLSERVER_EXT_DATA*.

Puede usar el siguiente ejemplo de código para crear un usuario de base de datos y conceder los privilegios.

CREATE USER 'user_name' IDENTIFIED BY 'your_password'; GRANT CREATE ON *.* TO 'user_name'; GRANT ALTER ON *.* TO 'user_name'; GRANT DROP ON *.* TO 'user_name'; GRANT INDEX ON *.* TO 'user_name'; GRANT REFERENCES ON *.* TO 'user_name'; GRANT SELECT ON *.* TO 'user_name'; GRANT CREATE VIEW ON *.* TO 'user_name'; GRANT SHOW VIEW ON *.* TO 'user_name'; GRANT TRIGGER ON *.* TO 'user_name'; GRANT CREATE ROUTINE ON *.* TO 'user_name'; GRANT ALTER ROUTINE ON *.* TO 'user_name'; GRANT EXECUTE ON *.* TO 'user_name'; GRANT INSERT, UPDATE ON AWS_SQLSERVER_EXT.* TO 'user_name'; GRANT INSERT, UPDATE, DELETE ON AWS_SQLSERVER_EXT_DATA.* TO 'user_name'; GRANT CREATE TEMPORARY TABLES ON AWS_SQLSERVER_EXT_DATA.* TO 'user_name';

En el ejemplo anterior, sustituya user_name por el nombre del usuario. Por último, sustituya your_password por una contraseña segura.

Si utiliza como destino una base de datos MySQL 5.7 o anterior, ejecute el siguiente comando. Para las bases de datos MySQL versión 8.0 y posterior, este comando está obsoleto.

GRANT SELECT ON mysql.proc TO 'user_name';

Para usar Amazon RDS para MySQL o Aurora MySQL como destino, establezca el parámetro lower_case_table_names en 1. Este valor significa que el servidor MySQL gestiona los identificadores de nombres de objetos como tablas, índices, disparadores y bases de datos sin distinguir entre mayúsculas y minúsculas. Si ha activado el registro binario en la instancia de destino, establezca el parámetro log_bin_trust_function_creators en 1. En este caso, no es necesario utilizar las características DETERMINISTIC, READS SQL DATA o NO SQL para crear funciones almacenadas. Para configurar estos parámetros, cree un grupo de parámetros de base de datos nuevo o modifique uno existente.

Configuración de conversión de SQL Server a MySQL

Para editar la configuración de conversión de SQL Server a MySQL, en AWS SCT, seleccion Configuración y, a continuación, elija Configuración de conversión. En la lista superior, elija SQL Server y, a continuación, SQL Server — MySQL. AWS SCT muestra todos los ajustes disponibles para la conversión de SQL Server a MySQL.

La configuración de conversión de SQL Server a MySQL en AWS SCT incluye opciones para lo siguiente:

  • Limitar el número de comentarios con elementos de acción en el código convertido.

    En Agregar comentarios en el código convertido para los elementos de acción de la gravedad seleccionada o superior, seleccione la gravedad de los elementos de acción. AWS SCT agrega comentarios en el código convertido para los elementos de acción de la gravedad seleccionada o superior.

    Por ejemplo, para minimizar el número de comentarios en el código convertido, seleccione Solo errores. Para incluir comentarios para todos los elementos de acción del código convertido, seleccione Todos los mensajes.

  • Permitir que la base de datos de SQL Server de origen almacene la salida de EXEC en una tabla. AWS SCT crea tablas temporales y un procedimiento adicional para simular esta característica. Para usar esta simulación, seleccione Crear rutinas adicionales para gestionar conjuntos de datos abiertos.

Consideraciones sobre la migración

Tenga en cuenta estos aspectos al migrar un esquema de SQL Server a MySQL:

  • MySQL no admite la instrucción MERGE. Sin embargo, AWS SCT puede simular la instrucción MERGE durante la conversión utilizando la cláusula INSERT ON DUPLICATE KEY y las instrucciones UPDATE FROM and DELETE FROM.

    Para conseguir una simulación correcta con INSERT ON DUPLICATE KEY, asegúrese de que existe una restricción o una clave principal únicas en la base de datos MySQL de destino.

  • Puede usar una instrucción GOTO y una etiqueta para cambiar el orden en el que se ejecutan las instrucciones. Todas las instrucciones Transact-SQL que van detrás de una instrucción GOTO se omiten y el procesamiento continúa en la etiqueta. Puede usar las instrucciones GOTO y las etiquetas se pueden utilizar en cualquier lugar de un procedimiento, lote o bloque de instrucciones. También puede anidar instrucciones GOTO.

    MySQL no utiliza instrucciones GOTO. Cuando AWS SCT convierte un código que contiene una instrucción GOTO, convierte esta instrucción para utilizar una instrucción BEGIN…END o LOOP…END LOOP. En la tabla siguiente, puede ver algunos ejemplos de cómo AWS SCT convierte las instrucciones GOTO.

    Instrucción de SQL Server Instrucción de MySQL
    BEGIN .... statement1; .... GOTO label1; statement2; .... label1: Statement3; .... END
    BEGIN label1: BEGIN .... statement1; .... LEAVE label1; statement2; .... END; Statement3; .... END
    BEGIN .... statement1; .... label1: statement2; .... GOTO label1; statement3; .... statement4; .... END
    BEGIN .... statement1; .... label1: LOOP statement2; .... ITERATE label1; LEAVE label1; END LOOP; statement3; .... statement4; .... END
    BEGIN .... statement1; .... label1: statement2; .... statement3; .... statement4; .... END
    BEGIN .... statement1; .... label1: BEGIN statement2; .... statement3; .... statement4; .... END; END
  • MySQL no admite funciones con valores de tabla de varias instrucciones. AWS SCT simula funciones con valores de tabla durante una conversión creando tablas temporales y reescribiendo instrucciones para utilizar estas tablas temporales.