Partager via


Convertir des bases de données MySQL (MySQLToSQL)

Après vous être connecté à MySQL, connectez-vous à SQL Server ou Azure SQL et définissez des options de mappage de projet et de données, vous pouvez convertir des objets de base de données MySQL en objets SQL Server ou Azure SQL Database, à l’aide de Assistant Migration SQL Server (SSMA) pour MySQL.

Processus de conversion

La conversion d’objets de base de données accepte les définitions d’objets de MySQL, les convertit en objets SQL Server ou Azure SQL similaires, puis charge ces informations dans les métadonnées SSMA. Les informations ne sont pas chargées dans l’instance de SQL Server. Vous pouvez ensuite afficher les objets et leurs propriétés à l’aide de l’Explorateur de métadonnées SQL Server ou SQL Azure.

Pendant la conversion, SSMA imprime les messages de sortie dans le volet de Sortie et les messages d’erreur dans le volet Liste d’erreurs. Utilisez les informations de sortie et d’erreur pour déterminer s’il est nécessaire de modifier vos bases de données MySQL ou votre processus de conversion pour obtenir les résultats de conversion souhaités.

Définir les options de conversion

Avant de convertir des objets, passez en revue les options de conversion du projet dans la boîte de dialogue Paramètres du projet. À l’aide de cette boîte de dialogue, vous pouvez définir la façon dont SSMA convertit les tables et les index. Pour plus d’informations, consultez Paramètres du projet (conversion).

Résultats de conversion

Le tableau suivant indique quels objets MySQL sont convertis et les objets SQL Server résultants :

Objets MySQL Objets SQL Server générés
Tables avec des objets dépendants tels que des index SSMA crée des tables avec des objets dépendants. La table est convertie avec tous les index et contraintes. Les index sont convertis en objets SQL Server distincts.

Le mappage de type de données spatiales ne peut être effectué qu’au niveau du nœud de table.

Pour plus d’informations sur les paramètres de conversion de table, consultez Paramètres de conversion
Fonctions Si la fonction peut être convertie directement en Transact-SQL, SSMA crée une fonction. Dans certains cas, la fonction doit être convertie en procédure stockée. Pour ce faire, utilisez la conversion de fonction dans les paramètres du projet. Dans ce cas, SSMA crée une procédure stockée et une fonction qui appelle la procédure stockée.

Choix donnés :

- Convertir en fonction des paramètres du projet
- Convertir en fonction

- Convertir en procédure stockée

Pour plus d’informations sur les paramètres de conversion de fonction, consultez Paramètres de conversion
Procédures Si la procédure peut être convertie directement en Transact-SQL, SSMA crée une procédure stockée. Dans certains cas, une procédure stockée doit être appelée dans une transaction autonome. Dans ce cas, SSMA crée deux procédures stockées : une qui implémente la procédure et une autre qui est utilisée pour appeler la procédure stockée d’implémentation.
Conversion de base de données Les bases de données en tant qu’objets MySQL ne sont pas directement converties par SSMA pour MySQL. Les bases de données MySQL sont traitées plus comme un nom de schéma et tous les paramètres physiques sont perdus pendant la conversion. SSMA pour MySQL utilise le mappage des bases de données MySQL aux schémas SQL Server pour mapper des objets de la base de données MySQL à une paire de base de données/schéma SQL Server appropriée.
Conversion du déclencheur SSMA crée des déclencheurs en fonction des règles suivantes :

- Les déclencheurs BEFORE sont convertis en déclencheurs INSTEAD OF T-SQL

- Les déclencheurs AFTER sont convertis en déclencheurs AFTER T-SQL avec ou sans itérations par ligne.
Afficher la conversion SSMA crée des vues avec des objets dépendants
Conversion d’instructions - Chaque objet d’instruction SQL peut contenir une seule instruction MySQL (comme DDL, DML et d’autres types d’instructions) ou BEGIN ... Bloc END.

- Dans une conversion multi-état :BEGIN ... Conversion de bloc END, l’instruction SQL peut également contenir une instruction BEGIN ... Bloc END comme un bloc dans la procédure, la fonction ou la définition de déclencheur. Ces blocs doivent être convertis de la même façon qu’ils sont convertis pour les objets d’instruction MySQL uniques.

Convertir des objets de base de données MySQL

Pour convertir des objets de base de données MySQL, vous sélectionnez d’abord les objets que vous souhaitez convertir, puis effectuez la conversion par SSMA. Pour afficher les messages de sortie pendant la conversion, dans le menu Affichage , sélectionnez Sortie.

Convertir des objets MySQL en syntaxe SQL Server ou Azure SQL

  1. Dans l’Explorateur de métadonnées MySQL, développez le serveur MySQL, puis développez Bases de données.

  2. Sélectionnez des objets à convertir :

    • Pour convertir tous les schémas, cochez la case en regard des bases de données.

    • Pour convertir ou omettre une base de données, cochez la case en regard du nom de la base de données.

    • Pour convertir ou omettre une catégorie d’objets, développez un schéma, puis activez ou désactivez la case à cocher en regard de la catégorie.

    • Pour convertir ou omettre des objets individuels, développez le dossier de catégorie, puis activez ou désactivez la case à cocher en regard de l’objet.

  3. Pour convertir tous les objets sélectionnés, cliquez avec le bouton droit sur Bases de données et sélectionnez Convertir le schéma.

    Vous pouvez également convertir des objets individuels ou des catégories d’objets en cliquant avec le bouton droit sur l’objet ou son dossier parent, puis en sélectionnant Convertir le schéma.

Afficher les problèmes de conversion

Certains objets MySQL peuvent ne pas être convertis. Vous pouvez déterminer les taux de réussite de la conversion en consultant le rapport de conversion récapitulative.

Afficher un rapport récapitulative

  1. Dans l’Explorateur de métadonnées MySQL, sélectionnez Bases de données.

  2. Dans le volet droit, sélectionnez l’onglet Rapport .

    Ce rapport montre le rapport d’évaluation récapitulative pour tous les objets de base de données qui ont été évalués ou convertis. Vous pouvez également afficher un rapport récapitulative pour des objets individuels :

    • Pour afficher le rapport d’un schéma individuel, sélectionnez la base de données dans l’Explorateur de métadonnées MySQL.

    • Pour afficher le rapport d’un objet individuel, sélectionnez l’objet dans l’Explorateur de métadonnées MySQL. Les objets qui ont des problèmes de conversion ont une icône d’erreur rouge.

Pour les objets qui ont échoué la conversion, vous pouvez afficher la syntaxe qui a entraîné l’échec de la conversion.

Afficher les problèmes de conversion individuels

  1. Dans l’Explorateur de métadonnées MySQL, développez Bases de données.

  2. Développez la base de données qui affiche une icône d’erreur rouge.

  3. Sous la base de données, développez un dossier contenant une icône d’erreur rouge.

  4. Sélectionnez l’objet qui a une icône d’erreur rouge.

  5. Dans le volet droit, sélectionnez l’onglet Rapport .

  6. En haut de l’onglet Rapport , il s’agit d’une liste déroulante. Si la liste affiche les statistiques, remplacez la sélection par Source.

    SSMA affiche le code source et plusieurs boutons juste au-dessus du code.

  7. Sélectionnez le bouton Problème suivant. Il s’agit d’une icône d’erreur rouge avec une flèche pointant vers la droite.

    SSMA met en évidence le premier code source problématique qu’il trouve dans l’objet actuel.

Pour chaque élément qui n’a pas pu être converti, vous devez déterminer ce que vous souhaitez faire avec cet objet :

  • Vous pouvez modifier l’objet dans la base de données MySQL pour supprimer ou réviser le code problématique. Pour charger le code mis à jour dans SSMA, vous devez mettre à jour les métadonnées. Pour plus d’informations, consultez Connexion à MySQL

  • Vous pouvez exclure l’objet de la migration. Dans SQL Server ou SQL Azure Metadata Explorer et MySQL Metadata Explorer, décochez la case en regard de l’élément avant de charger les objets dans SQL Server ou Azure SQL et de migrer des données à partir de MySQL.