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 :

Synchronisation tables de Oracle vers SQL Server


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 62
    Points
    62
    Par défaut Synchronisation tables de Oracle vers SQL Server
    Bonjour,

    je cherche le moyen de synchroniser des tables Oracle vers des tables SQL Server.

    En fait, j’ai réalisé un linked server dans SQL Server qui pointe sur une base ORACLE mais les résultats n’étaient pas trop satisfaisants :
    D’une part la connexion SQL Server/ORACLE était trop lente et le temps de réponses des requêtes qui utilisent les tables des deux BD est trop long,
    d’autre part le linked server ne me permet pas de faire les contraintes d’intégrités entre les tables de BD différentes.

    Maintenant je souhaite me pencher vers la synchronisation ORACLE/SQL Server pour pouvoir travailler avec des tables SQL Server seulement et éviter les tables liés.

    Est-ce que cela est possible avec le SSMS ? Sinon quels sont les moyens pour synchroniser des Tables Oracle vers SQL Server ?

    Merci pour votre aide.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 781
    Points : 52 778
    Points
    52 778
    Billets dans le blog
    5
    Par défaut
    d’autre part le linked server ne me permet pas de faire les contraintes d’intégrités entre les tables de BD différentes.
    Ne rêvez pas cela est déjà strictement impossible entre deux bases d'un même serveur pour des raisons de cohérence transactionnelles !

    Sinon quels sont les moyens pour synchroniser des Tables Oracle vers SQL Server ?
    Qu'apellez vous synchroniser ? Quel couplage ? Quelle latence ?? EN principe la réplication est faites pour cela... Seulement la réplication dans Oracle, c'est lourd et complexe...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 62
    Points
    62
    Par défaut
    Salut,
    Je m’excuse tout d’abord si je n’étais pas claire dans ma question.

    En fait je voudrais répliquer les données d’une table ORACLE vers une autre table (ayant la même structure) SQL Server, et ce quotidiennement a une heure donnée (normalement à la fin de chaque journée).
    Le résultat que je voudrais atteindre c’est avoir les mêmes données de la table X d’oracle dans la Table Y de SQL Sever, à la fin de chaque journée.

    Y’a-t-il un moyen dans SQL Server Management Studio qui permet de lire les données d’ORACLE et de les répliquer vers une table SQL Server ? Sinon y’a t’il d'autres outils pour faire cela ?

    Merci pour votre aide.

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonsoir,

    Oui, ce que vous voulez faire c'est ni plus ni moins qu'un export de données.
    Vous pouvez utiliser les serveurs liés.

    Pour l'export vous pouvez par exemple soit passer par un script TSQL soit via un package SSIS. Dans les 2 cas vous pouvez ensuite planifier votre export.

    ++

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    J’ai développé ce bout de code pour mettre à jour la table de SQL Server depuis le serveur lié qui pointe vers ORACLE.
    J’ai mis cette procédure dans l’Agent SQL Server pour permettre de l’exécuter automatiquement chaque journée à une heure donnée…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ALTER PROCEDURE [dbo].[Synchro]
    AS
    BEGIN
     
    insert into FACT select * from openquery(oranew,'select NUM_0,DES_0 from FACT_0')where NUM_0 not in (select NUM from FACT)
     
    END
    Sachant que :
    FACT(NUM,DES) : c’est une table de SQL server
    FACT_0(NUM_0,DES_0) : c’est une table d’ORACLE
    Oranew : c’est le nom du linked server

    Cela marche parfaitement pour l’instant, mais je voudrais savoir vos avis
    Ce script est-il "propre" ? Voyez-vous des améliorations à apporter ?
    Merci pour vos avis.

  6. #6
    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 : 42
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Comme vous avez un serveur lié, vous pouvez écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO dbo.FACT
    SELECT NUM_0, DES_0
    FROM oranew.schema.FACT_0
    WHERE NUM_0 NOT IN (SELECT NUM FROM dbo.FACT)
    N'utilisez jamais * dans un SELECT, c'est contre-performant.
    Qualifiez les noms des tables par le schéma auquel elles appartiennent

    @++

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par CTEMan Voir le message
    Bonjour,

    Comme vous avez un serveur lié, vous pouvez écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO dbo.FACT
    SELECT NUM_0, DES_0
    FROM oranew.schema.FACT_0
    WHERE NUM_0 NOT IN (SELECT NUM FROM dbo.FACT)
    N'utilisez jamais * dans un SELECT, c'est contre-performant.
    Qualifiez les noms des tables par le schéma auquel elles appartiennent

    @++
    Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/04/2007, 22h31
  2. [Migration] Oracle vers SQL Server 2005 - Problème de BLOB
    Par thomasrenault dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/02/2006, 10h26
  3. Traduction de code Oracle vers SQL Server
    Par randomcl dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/11/2005, 23h43
  4. [debutan] migration de données Oracle vers SQL SERVER 2000
    Par Mil00se dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/08/2005, 17h44
  5. Migration de données Oracle vers SQL server
    Par joul's dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 16/02/2005, 15h05

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