

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Conversion de SQL Server en MySQL
<a name="CHAP_Source.SQLServer.ToMySQL"></a>

Pour émuler les fonctions de base de données Microsoft SQL Server dans votre code MySQL converti, utilisez le pack d'extension SQL Server vers MySQL intégré. AWS SCT Pour plus d’informations sur les packs d’extension, consultez [Utilisation de packs d'extension avec AWS Schema Conversion Tool](CHAP_ExtensionPack.md). 

**Topics**
+ [Privilèges pour MySQL en tant que base de données cible](#CHAP_Source.SQLServer.ToMySQL.ConfigureTarget)
+ [Paramètres de conversion SQL Server vers MySQL](#CHAP_Source.SQLServer.ToMySQL.ConversionSettings)
+ [Considérations concernant la migration](#CHAP_Source.SQLServer.ToMySQL.MigrationConsiderations)

## Privilèges pour MySQL en tant que base de données cible
<a name="CHAP_Source.SQLServer.ToMySQL.ConfigureTarget"></a>

Les privilèges requis pour MySQL en tant que cible sont les suivants :
+ CRÉER SUR\$1 . \$1
+ MODIFIER \$1 . \$1
+ DÉPOSEZ \$1 . \$1
+ INDEX SUR \$1 . \$1
+ RÉFÉRENCES SUR\$1 . \$1
+ SELECT ON \$1.\$1
+ CRÉER UNE VUE SUR \$1 . \$1
+ SHOW VIEW ON \$1.\$1
+ DÉCLENCHEUR ACTIVÉ\$1 . \$1
+ CRÉER UNE ROUTINE SUR\$1 . \$1
+ MODIFIER LA ROUTINE SUR \$1 . \$1
+ EXÉCUTER SUR\$1 . \$1
+ INSÉRER, METTRE À JOUR SUR AWS\$1SQLSERVER \$1EXT. \$1
+ INSÉREZ, METTEZ À JOUR, SUPPRIMEZ SUR AWS\$1SQLSERVER \$1EXT\$1DATA. \$1
+ CRÉEZ DES TABLES TEMPORAIRES SUR AWS\$1SQLSERVER \$1EXT\$1DATA. \$1

Vous pouvez utiliser l’exemple de code suivant pour créer un utilisateur de base de données et accorder les privilèges.

```
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';
```

Dans l'exemple précédent, remplacez *user\$1name* par le nom de votre utilisateur. Remplacez-le ensuite *your\$1password* par un mot de passe sécurisé.

Si vous utilisez une base de données MySQL version 5.7 ou inférieure comme cible, exécutez la commande suivante. Pour les bases de données MySQL version 8.0 et supérieures, cette commande est obsolète.

```
GRANT SELECT ON mysql.proc TO 'user_name';
```

Pour utiliser Amazon RDS for MySQL ou Aurora MySQL en tant que cible, définissez le paramètre `lower_case_table_names` sur `1`. Cette valeur signifie que le serveur MySQL traite les identifiants des noms d’objets tels que les tables, les index, les déclencheurs et les bases de données sans distinction entre majuscules et minuscules. Si vous avez activé la journalisation binaire dans votre instance cible, définissez le paramètre `log_bin_trust_function_creators` sur `1`. Dans ce cas, vous n’avez pas besoin d’utiliser les caractéristiques `DETERMINISTIC`, `READS SQL DATA` ni `NO SQL` pour créer des fonctions stockées. Pour configurer ces paramètres, créez un nouveau groupe de paramètres de base de données ou modifiez un groupe de paramètres de base de données existant.

## Paramètres de conversion SQL Server vers MySQL
<a name="CHAP_Source.SQLServer.ToMySQL.ConversionSettings"></a>

Pour modifier les paramètres de conversion de SQL Server vers MySQL, AWS SCT sélectionnez **Paramètres**, puis sélectionnez **Paramètres de conversion**. Dans la liste supérieure, choisissez **SQL Server**, puis **SQL Server — MySQL**. AWS SCT affiche tous les paramètres disponibles pour la conversion de SQL Server vers MySQL.

Les paramètres de conversion de SQL Server vers MySQL AWS SCT incluent des options pour les éléments suivants :
+ Pour limiter le nombre de commentaires contenant des actions dans le code converti.

  Pour **Ajouter des commentaires dans le code converti pour les actions de gravité sélectionnée ou supérieure**, choisissez la sévérité des actions. AWS SCT ajoute des commentaires dans le code converti pour les actions dont la sévérité est sélectionnée ou supérieure.

  Par exemple, pour réduire au maximum le nombre de commentaires dans votre code converti, choisissez **Erreurs uniquement**. Pour inclure les commentaires pour tous les éléments d’action de votre code converti, choisissez **Tous les messages**.
+ Pour permettre à votre base de données SQL Server source de stocker le résultat de `EXEC` dans une table. AWS SCT crée des tables temporaires et une procédure supplémentaire pour émuler cette fonctionnalité. Pour utiliser cette émulation, sélectionnez **Créer des routines supplémentaires pour gérer les ensembles de données ouverts**.

## Considérations concernant la migration
<a name="CHAP_Source.SQLServer.ToMySQL.MigrationConsiderations"></a>

Tenez compte des éléments suivants lors de la migration d'un schéma SQL Server vers MySQL :
+ MySQL ne supporte pas `MERGE` cette déclaration. Cependant, AWS SCT vous pouvez émuler l'`MERGE`instruction lors de la conversion en utilisant la `INSERT ON DUPLICATE KEY` clause et les `UPDATE FROM and DELETE FROM` instructions.

  Pour une émulation correcte`INSERT ON DUPLICATE KEY`, assurez-vous qu'une contrainte ou une clé primaire unique existe sur la base de données MySQL cible.
+ Vous pouvez utiliser une `GOTO` instruction et une étiquette pour modifier l'ordre dans lequel les instructions sont exécutées. Toutes les instructions Transact-SQL qui suivent une `GOTO` instruction sont ignorées et le traitement se poursuit au niveau de l'étiquette. Vous pouvez utiliser `GOTO` des instructions et des étiquettes n'importe où dans une procédure, un lot ou un bloc d'instructions. Vous pouvez également imbriquer `GOTO` des relevés.

  MySQL n'utilise pas d'`GOTO`instructions. Lors de la AWS SCT conversion du code contenant une `GOTO` instruction, il convertit l'instruction pour utiliser une `LOOP…END LOOP` instruction `BEGIN…END` or. Vous trouverez des exemples de AWS SCT conversion d'`GOTO`instructions dans le tableau suivant.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/SchemaConversionTool/latest/userguide/CHAP_Source.SQLServer.ToMySQL.html)
+ MySQL ne prend pas en charge les fonctions multiinstructions à valeur de table. AWS SCT simule des fonctions basées sur des tables lors d'une conversion en créant des tables temporaires et en réécrivant des instructions pour utiliser ces tables temporaires.