

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Conversión de SQL Server a MySQL
<a name="CHAP_Source.SQLServer.ToMySQL"></a>

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](CHAP_ExtensionPack.md). 

**Topics**
+ [Privilegios para MySQL como base de datos de destino](#CHAP_Source.SQLServer.ToMySQL.ConfigureTarget)
+ [Configuración de conversión de SQL Server a MySQL](#CHAP_Source.SQLServer.ToMySQL.ConversionSettings)
+ [Consideraciones sobre la migración](#CHAP_Source.SQLServer.ToMySQL.MigrationConsiderations)

## Privilegios para MySQL como base de datos de destino
<a name="CHAP_Source.SQLServer.ToMySQL.ConfigureTarget"></a>

Los privilegios necesarios para MySQL como destino se enumeran a continuación:
+ CREATE ON \$1.\$1
+ ALTER ON \$1.\$1
+ DROP ON \$1.\$1
+ INDEX ON \$1.\$1
+ REFERENCES ON \$1.\$1
+ SELECT ON \$1.\$1
+ CREATE VIEW ON \$1.\$1
+ SHOW VIEW ON \$1.\$1
+ TRIGGER ON \$1.\$1
+ CREATE ROUTINE ON \$1.\$1
+ ALTER ROUTINE ON \$1.\$1
+ EXECUTE ON \$1.\$1
+ INSERTE Y ACTUALICE EN AWS\$1SQLSERVER \$1EXT. \$1
+ INSERTAR, ACTUALIZAR Y ELIMINAR EN AWS\$1SQLSERVER \$1EXT\$1DATA. \$1
+ CREA TABLAS TEMPORALES EN AWS\$1SQLSERVER \$1EXT\$1DATA. \$1

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, *user\$1name* sustitúyalo por el nombre de tu usuario. A continuación, *your\$1password* sustitúyala 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
<a name="CHAP_Source.SQLServer.ToMySQL.ConversionSettings"></a>

Para editar la configuración de conversión de SQL Server a MySQL, AWS SCT seleccione **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 AWS SCT incluye opciones para lo siguiente:
+ Limitar el número de comentarios con elementos de acción en el código convertido.

  En **Añadir comentarios en el código convertido para los elementos de acción de la gravedad seleccionada o superior**, selecciona la gravedad de los elementos de acción. AWS SCT añade 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**.
+ Para permitir que la base de datos de SQL Server de origen almacene los resultados `EXEC` en una tabla. AWS SCT crea tablas temporales y un procedimiento adicional para emular esta función. Para usar esta simulación, seleccione **Crear rutinas adicionales para gestionar conjuntos de datos abiertos**.

## Consideraciones sobre la migración
<a name="CHAP_Source.SQLServer.ToMySQL.MigrationConsiderations"></a>

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 emular la `MERGE` declaración durante la conversión utilizando la `INSERT ON DUPLICATE KEY` cláusula y las `UPDATE FROM and DELETE FROM` declaraciones.

  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 el código que contiene una `GOTO` sentencia, convierte la sentencia para usar una `LOOP…END LOOP` sentencia `BEGIN…END` o. Puede encontrar ejemplos de cómo se AWS SCT convierten `GOTO` las sentencias en la siguiente tabla.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/SchemaConversionTool/latest/userguide/CHAP_Source.SQLServer.ToMySQL.html)
+ MySQL no admite funciones con valores de tabla con múltiples sentencias. AWS SCT simula funciones con valores de tabla durante una conversión mediante la creación de tablas temporales y la reescritura de las sentencias para utilizarlas.