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

Réplications SQL Server Discussion :

Synchro base locale <=> base distante


Sujet :

Réplications SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Synchro base locale <=> base distante
    Bonjour,


    j'explique rapidement le contexte afin que vous vous imprégniez parfaitement de mon problème
    (Je m'excuse par avance si je ne poste pas sur le bon forum)


    Aujourd'hui, j'ai développé un application .net fonctionnant avec base SQL Server 2005 distante. C'est un serveur sur lequel je n'ai que très peu la main, je suis simplement capable de créer des tables et des procédures stockées.

    Tout se passait très bien, les gens étaient heureux.


    C'était sans compter une catégorie bien particulière de personnes viles et perfides : les commerciaux.
    Ayant entendu parler de mon application, ils veulent maintenant avoir accès eux aussi au Saint Graal !



    Soit, j'ai maintenant un problème épineux.
    Nos commerciaux de par leur métier, doivent constamment se déplacer. Ils n'auront donc pas accès au serveur. Ils vont travailler en local.
    Ils possèdent tous un SQL Server 2008R2 (sisi !) sur leur portable, comment faire pour que chaque matin avant de partir ils puissent synchroniser les 2 bases?


    Sachant que j'ai quelques contraintes, ça serait trop facile sinon !
    • La synchro doit se faire à l'ouverture du programme. En gros, connexion puis lancement de l'appli puis synchro.
      Il ne faut pas utiliser d'autres programmes (pas que je veuille pas, mais seule mon appli sera autorisée à être installée sur leur poste...)
    • Il faut une méthode 'simple' et facilement administrable, car il n'est pas sur que ce soit moi qui la maintienne par la suite.
      Si une table vient à changer sur le serveur, les clients doivent recevoir les modifications facilement.
    • J'aurai bien fait un drop de la base pour la recréer ensuite, mais l'utilisateur peut avoir des données à remonter au serveur. La synchro doit être bidirectionnelle.
    • Il y a environ une 40aine de prod stock et une 30aine de tables (pour environ 10 millions de lignes au total) à synchroniser. La mise à jour doit être 'rapide', il faut donc qu'elle soit différentielle. Tout ce qui existe déjà des 2 cotés ne doit pas bouger.
    • Certaines tables sur mon serveur proviennent d'une réplication par batch de nuit de SAP. Elles sont droppées puis recrées et rechargées. Impossible d'ajouter une colonne 'last_update_time' par exemple, elle n'existera plus le lendemain



    J'ai regardé du coté de Microsoft Sync, mais je n'ai pas vraiment trouvé mon bonheur.



    Existe t'il une technique made in Microsoft ou autre permettant de réaliser cette synchro entre 2 SQL server?


    D'avance, un grand merci

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations forums :
    Inscription : Septembre 2008
    Messages : 168
    Points : 184
    Points
    184
    Par défaut
    J'ai pris le temps de te lire, mais au fait en somme tu devrais prendre quelques cours sur la Replication ça fait exactement ce que tu veux faire d'une part et d'autre part je trouve pas cool(à mon avis) de faire un drop et re-create c'est un peu risqué et ça touche(en mal) au principe de persistences des données

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 739
    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 739
    Points : 52 451
    Points
    52 451
    Billets dans le blog
    5
    Par défaut
    Le mieux serait une réplication de fusion avec mises à jour instantanée en cas de connexion au réseau local d'entreprise. Il n'y aura donc aucune manipulation particulière à faire pour les utilisateurs puisque dès que le portable sera connecté au réseau, la réplication bidirectionnelle fera son travail en toute transparence...

    Exemple : http://mcherif.wordpress.com/2013/02...ver-2008-r2-2/
    http://technet.microsoft.com/fr-fr/l...ql.105%29.aspx

    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/ * * * * *

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par tresorunikin Voir le message
    J'ai pris le temps de te lire, mais au fait en somme tu devrais prendre quelques cours sur la Replication ça fait exactement ce que tu veux faire d'une part et d'autre part je trouve pas cool(à mon avis) de faire un drop et re-create c'est un peu risqué et ça touche(en mal) au principe de persistences des données
    Hello, merci d'avoir lu mon pavé
    Alors non, je ne compte pas faire un drop des tables, justement je souhaite que la mise à jour soit différentielle et ne récupère d'un coté comme de l'autre seulement les "nouvelles" informations. Désolé si je me suis mal exprimé.




    Le mieux serait une réplication de fusion avec mises à jour instantanée en cas de connexion au réseau local d'entreprise. Il n'y aura donc aucune manipulation particulière à faire pour les utilisateurs puisque dès que le portable sera connecté au réseau, la réplication bidirectionnelle fera son travail en toute transparence...

    Exemple : http://mcherif.wordpress.com/2013/02...ver-2008-r2-2/
    http://technet.microsoft.com/fr-fr/l...ql.105%29.aspx

    A +
    Je ne l'ai pas précisé mais j'ai déjà regardé cette réplication et cela m'avait paru parfait pour ce que je voulais.
    Par contre, je n'ai aucuns droits sur les SQL Server, je ne peux pas créé de serveur de distribution. Et on ne me donnera jamais les droits, moi et mes 300 users, nous ne sommes qu'une goutte parmi les 340 000 de la boite
    Je suis donc à la recherche d'un moyen (même en code .NET) qui ne me demanderai aucun droit.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 739
    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 739
    Points : 52 451
    Points
    52 451
    Billets dans le blog
    5
    Par défaut
    C'est tout à fait fantaisiste de pense à redévelopper un tel système. Pour information, le nombre de ligne de code du "moteur" de réplication mis au point par MS est supérieur au nombre de lignes de code du moteur relationnel, ceci afin de garantir performances et sécurité....

    Imaginez un peu le travail que cela représenterait pour vous afin d'obtenir le même niveau de fonctionnalités avec le sécurité qui va avec et surtout les performances (ne pas bloquer les autres utilisateurs...).

    Bref, vous faites fausse route ! Expliquez et demandez les droits, ou faites mettre en place cette réplication...

    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/ * * * * *

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    C'est tout à fait fantaisiste de pense à redévelopper un tel système. Pour information, le nombre de ligne de code du "moteur" de réplication mis au point par MS est supérieur au nombre de lignes de code du moteur relationnel, ceci afin de garantir performances et sécurité....

    Imaginez un peu le travail que cela représenterait pour vous afin d'obtenir le même niveau de fonctionnalités avec le sécurité qui va avec et surtout les performances (ne pas bloquer les autres utilisateurs...).

    Bref, vous faites fausse route ! Expliquez et demandez les droits, ou faites mettre en place cette réplication...

    A +
    Merci pour cette réponse, ca me conforte dans l'idée qu'il n'y a pas beaucoup de solution, mais qu'il en existe tout de même et que tant que nous n'aurons pas de droits, rien de correct ne pourra être mis en place

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 739
    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 739
    Points : 52 451
    Points
    52 451
    Billets dans le blog
    5
    Par défaut
    CQFD !

    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/ * * * * *

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    je reviens sur ce sujet moins d'un mois après l'avoir ouvert.
    Faute d'avoir les droits dans ma société, je tente de récréer un environnement identique chez moi (merci DreamSpark ).

    Tout fonctionne plutôt bien j'ai réussi à créer un distributeur et un éditeur (et les articles que je souhaite répliquer) ainsi qu'un poste client.
    Par contre, je ne parviens pas à créer d'abonnés...


    Lorsque sur ma machine cliente, je tente d'indiquer mon serveur comme distributeur, j'ai constamment une erreur.
    J'ai tout tenté, mettre le nom du serveur (WSERVER2008R2), mettre son IP, mettre le nom serveur + le nom d'instance du sql server (MSSQLSERVER par défaut), rien ne fonctionne.
    Par exemple si j'indique l'adresse IP, j'obtiens cette alerte Nom : erreur.jpg
Affichages : 2099
Taille : 131,5 Ko.


    Je tenté plusieurs pistes venus de divers forums, mais ça ne fonctionne toujours pas. Comme :
    -Ajouter un nom d'alias à mon serveur
    -Ouvrir le port 1433
    -Désactiver le firewall


    A coté de cela :
    -Mes 2 machines se ping
    -Elles sont sur le même WorkGroup
    -Un telnet sur le port 1433 fonctionne
    -Si je tente simplement d'ajouter mon serveur sur mon client en passant par Fichier\Connect Object Explorer (et en indiquant simplement l'IP serveur) ça fonctionne aussi. Je peux ainsi faire de simple requête SQL dessus.

    Bref, je ne vois pas ce qui bloque !
    Si vous avez une idée ou une piste que je puisse investiguer... à votre bon cœur

    Merci.

  9. #9
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 118
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    Essayer de créer un Alias sur le subscriber dans Sql Server Configuration Manager avec le nom de la machine et l'IP du distibuteur.

Discussions similaires

  1. Choix entre une base local ou la base distante
    Par bm10 dans le forum WinDev
    Réponses: 1
    Dernier message: 23/01/2015, 09h08
  2. Modifications de base locale vers base distante
    Par cmoiscrat dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 21/09/2009, 16h31
  3. Synchronisation entre une base locale et distante
    Par gege87270 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 09/11/2007, 15h04
  4. [MySQL] Synchroniser une base locale et une base distante
    Par BenoitDenis dans le forum PHP & Base de données
    Réponses: 77
    Dernier message: 07/04/2006, 15h24
  5. base local / base distante
    Par unam17 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/04/2006, 11h59

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