IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Migrer une base de données MySQL vers SQL Server


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Par défaut Migrer une base de données MySQL vers SQL Server
    Salut à tous,

    J'ai une grosse base de données, j'ai essayé de faire un dump mysql (génération d'un script mysql pour recréer la structure et les données de la base) mais les scripts sont en syntaxe mysql donc, ça ne passe pas tel quel dans mon Management Studio.

    Les scripts de dump sont volumnieux, ce qui fait que repasser sur les 40000 échappements de caractères à la mano ça ne me tente pas tellement.

    J'ai bien essayé de faire un "Rechercher, Remplacer tout" en désactivant le suivi de modifications mais visiblement, c'est également trop de boulot pour Management Studio qui plante.

    Je souhaite savoir s'il est possible avec SQL Server de copier une base de données MySQL. Un petit plus au défi : je suis en version express.

    Merci d'avance pour vos réponses.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Essayons de mettre en place un serveur lié :

    - Rendez vous ici pour télécharger le connecteur MySQL
    - Installez celui-ci
    - Ouvrez les outils d'administration (disponibles depuis le menu démarrer sous XP, ou bien à partir du panneau de configuration sous Win7)
    - Ouvrez la console "Sources de données (ODBC)"
    - Passez dans l'onglet DSN Système, puis cliquez sur "Ajouter ..."
    - Dans la liste qui apparaît, vous devriez trouver "MySQL ODBC 5.1" driver
    - Une fenêtre de configuration de la source de données apparaît : renseignez toutes les saisies en spécifiant le nom de la base de données dans "Data Source Name"
    - Faites un petit "Test" pour vérifier la connectivité, et si tout est OK, validez par le bouton du même nom.
    Exécutez ensuite ce petit script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    EXEC master.dbo.sp_addlinkedserver 
    @server = N'monServeurLiéMySQL', 
    @srvproduct=N'MySQL', 
    @provider=N'MSDASQL', 
    @provstr=N'DRIVER={MySQL ODBC 5.1 Driver}; SERVER=nomInstanceMySQL; DATABASE=maBDMySQL; USER=monUser; PASSWORD=***; OPTION=3'
    - Rendez-vous dans SQL Server Management Studio dans l'Explorateur d'objets (F8) sous le nœud "Objets Serveur" puis "Serveurs liés", cliquez-droit sur ce nœud et choisissez "Rafraîchir" : vous devriez voir votre serveur lié.

    - Vous pouvez maintenant écrire des requêtes du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT toutesMesColonnes
    INTO uneNouvelleTableDansMaBDSQLServer
    FROM monServeurLiéMySQL.maBDMySQL.maTable
    La table uneNouvelleTableDansMaBDSQLServer sera créée à la volée mais sans ses contraintes.

    @++

  3. #3
    Membre éclairé Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Par défaut
    Merci.

    J'ai déjÃ* une configuré une source de données ODBC qui fonctionne. Donc, ça c'est fait.

    J'ai exécuté la commande indiquée :
    Citation Envoyé par Console
    Commande(s) réussie(s).
    Dans Objets serveur > Serveurs liés, je trouve bien un nouvel objet portant le nom que j'ai indiqué pour @server.

    Mais lorsque j'ouvre l'arborescence pour aller dans Catalogues > default > Tables, j'ai le message d'erreur suivant :
    TITRE : Microsoft SQL Server Management Studio
    ------------------------------
    Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)
    Pour obtenir de l'aide, cliquez sur : http://go.microsoft.com/fwlink?ProdN...r&LinkId=20476
    ------------------------------
    INFORMATIONS SUPPLÉMENTAIRES :
    An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
    ------------------------------
    Impossible d'initialiser l'objet de la source de données du fournisseur OLE DB "MSDASQL" du serveur lié "xxx.xxx-xxx.xxx". (Microsoft SQL Server, Erreur : 7303)
    Pour obtenir de l'aide, cliquez sur : http://go.microsoft.com/fwlink?ProdN...3&LinkId=20476
    ------------------------------
    BOUTONS :
    OK
    ------------------------------
    Ce qui m'étonne, c'est que l'on n'indique nulle part dans la commande EXEC le nom de la source ODBC.
    J'ai essayé de le mettre dans @server, mais l'erreur est la même.

    A quoi correspond @server? Il s'agit du nom qu'on veut donner Ã* cette connexion?

    Et dans @provstr, en gros, c'est la chaîne de connexion Ã* ma source de données ODBC?

  4. #4
    Membre éclairé Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Par défaut
    Bon, après avoir essayé 45 fois toutes les syntaxes (Data Source Name, DataSourceName, Data Source, DataSource, etc.) ça marche bien mieux avec cette chaîne de connexion :
    @provstr=N'DSN={nomDeMaSourceDeDonnees}'
    Dernier point de blocage, (j'imagine) :
    Dans mon from, le nom d'objet {LinkedSeverName}.{Database}.{Table} n'est pas reconnu. :/

    De plus, le nom de mon serveur lié n'apparaît pas dans l'autocomplétion. :/

    A quoi cela peut-il être du?

  5. #5
    Membre éclairé Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Par défaut
    J'ai essayé ça :
    SELECT * INTO test FROM [integration].[meta].[dbo].[t_groupe]
    Résultat :
    Utilisation non valide d'un schéma ou d'un catalogue pour le fournisseur OLE DB "MSDASQL" du serveur lié "integration". Un nom en quatre parties a t donné, mais le fournisseur ne met pas disposition les interfaces requises pour utiliser un catalogue ou un schma.
    Donc, c'est pas bon.

    Sinon, bonne nouvelle, quand je donne un mauvais nom de LinkedServeur, il m'engueule :
    SELECT * INTO test FROM [integration-1].[meta].[dbo].[t_groupe]
    Impossible de trouver le serveur 'integration-1' dans sysservers. Vrifiez que le nom du serveur correct a t spcifi. Si ncessaire, excutez la procdure stocke sp_addlinkedserver pour ajouter ce serveur sysservers.
    Mais c'est bizarre parce quand j'enlève le ".dbo.", il m'engueule pas pareil...
    SELECT * INTO test FROM [integration-1].[meta].[t_groupe]
    et aussi pour
    SELECT * INTO test FROM [integration].[meta].[t_groupe]
    Nom d'objet 'integration-1.meta.t_groupe' non valide.
    Essai également avec ça :
    SELECT * INTO test DROM [integration].[meta]..[t_groupe]
    Msg 7313, Level 16, State 1, Line 1
    Un schma ou un catalogue non valide a t spcifi pour le fournisseur "MSDASQL" du serveur li "integration".
    Est-ce que je dois essayer de trouver encore d'autres syntaxes ou est-ce que c'est mon serveur lié qui est mal configuré?
    Peut-être utile :
    Citation Envoyé par Vues du système > sys.servers
    server_id name product provider data_source location provider_string catalog connect_timeout query_timeout is_linked is_remote_login_enabled is_rpc_out_enabled is_data_access_enabled is_collation_compatible uses_remote_collation collation_name lazy_schema_validation is_system is_publisher is_subscriber is_distributor is_nonsql_subscriber is_remote_proc_transaction_promotion_enabled modify_date
    1 integration MySQL MSDASQL NULL NULL DSN=MTDint NULL 0 0 1 0 0 1 0 1 NULL 0 0 0 0 0 0 1 2010-06-02 14:08:59.693

  6. #6
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2009
    Messages : 138
    Par défaut
    Citation Envoyé par Goupo Voir le message
    J'ai essayé ça :
    Résultat :
    Donc, c'est pas bon.

    Sinon, bonne nouvelle, quand je donne un mauvais nom de LinkedServeur, il m'engueule :


    Mais c'est bizarre parce quand j'enlève le ".dbo.", il m'engueule pas pareil...

    et aussi pour

    Essai également avec ça :



    Est-ce que je dois essayer de trouver encore d'autres syntaxes ou est-ce que c'est mon serveur lié qui est mal configuré?
    Peut-être utile :
    Re-Salut Goupo!

    J'ai cherché moi aussi sur ça aujourd'hui. J'ai trouvé une syntaxe pour un simple select depuis ma base liée mysql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from monServeruLié...maTable;
    Mais bon, c'est bizarre sur plusieurs points :
    • pas d'autocomplétion pour le nom du serveur lié
    • ma partie après le FROM est soulignée de rouge
    • j'ai des fois un message d'erreur : unable to start T-SQL debugging... blablabla disant que c'est temporaire... et c'est le cas...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Migrer une base de données Excel vers Access, possible ou non ?
    Par VBAG38 dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/08/2012, 16h05
  2. conversion d'une base de donnée Access vers Sql server
    Par elgaied dans le forum Modélisation
    Réponses: 6
    Dernier message: 22/01/2010, 12h26
  3. migrer une base de données acces vers oracle
    Par essse dans le forum Connexions aux bases de données
    Réponses: 2
    Dernier message: 03/03/2009, 13h13
  4. Exporter une base de données MySQL vers un fichier
    Par Niak74 dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 05/05/2008, 10h05
  5. [ASA]Migrer une base de données Sybase vers Oracle
    Par madina dans le forum Sybase
    Réponses: 2
    Dernier message: 12/04/2006, 12h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo