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 :

Réplication de données


Sujet :

Réplications SQL Server

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 64
    Points : 39
    Points
    39
    Par défaut Réplication de données
    Bjr,
    J'ai mis en place une structure de base de données dont certaines tables contiennent des données de référence qui peuvent être mises à jour quotidiennement.

    Je dois permettre à nos clients de récupérer ces données dans un moment hors activité (la nuit par ex).

    Pour celà, j'ai mis en place (sous forme de proto) la réplication de fusion.
    Je crée une publication qui fait une capture instantanée.
    Mes abonnés récupère la capture instantané et peuvent ainsi se mettre à jour quand il le souhaite grace à leur abonnement à la réplication.
    Les données ne transitent que dans un sens (serveur vers abonnés) mais je n'interdis pas au client d'entrer des données dans sa propre base.

    Ceci ne pose pas de problème du moment qu'on ne touche pas grand chose à la structure de la BDD (suppression de colonnes, ajout de colonnes, saisie de données).

    Si par exemple pour un besoin d'évolution je dois modifier la structure de ma BDD, une clé primaire d'une table ou ajouter des contraintes ou des filtres, etc. alors le serveur de publication me demande de regénéré la capture instantanée.

    Ceci a pour résultat de devoir republier chez mes abonnés cette nouvelle capture et ils perdront toutes leurs données saisies en local (puisque je le rappelle, je n'accepte pas sur le serveur des données de l'abonné).

    Quelqu'un peut-il me proposer une solution ou un paramétrage de cette réplication?
    J'ai peut être choisi un moyen trop compliqué ou peu adapté.

    Merci par avance.

    Précision: Je travaille avec SQLServer 2005, Windows 2003 Server

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    bonjour,

    est-ce qu'il y a beaucoup de tables modifiées côté utilisateurs abonnés ? Est-ce que les abonnés sont en 2005 également ?

    merci
    Emmanuel T.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 64
    Points : 39
    Points
    39
    Par défaut
    Le principe est d'avoir une BDD maitre qui possède qq tables de référence contenant des données, les autres étant vide. La réplication est effectuée sur cette base.

    Lors de l'installation d'un client, je viens l'abonner à la réplication pour que la BDD soit répliquée sur mon client.

    Supposons, que ma BDD maître doit être modifiée suite à une évolution de mon logiciel. Je déplace une colonne par exemple. J'ai le message suivant:
    table 'CLIENT (dbo)'
    - Impossible de modifier la table.
    Il n'est pas possible de supprimer la contrainte par défaut portant sur la colonne rowguid ; elle est utilisée par la réplication de fusion.
    Échec de l'opération DDL à l'intérieur de la manipulation de réplication DDL.
    La transaction s'est terminée dans le déclencheur. Le lot a été abandonné.

    Dans ce cas, je ne peux pas valider ma modif. Je suis donc obligé de revenir en arrière. (C'est pas vital de changer l'ordre des colonnes mais c'est pour l'exemple)

    J'ai des messages similaires lorsque je change le type d'une colonne que je sais vide. (C'est pas très malin mais c'est pour tester)


    Côté client abonné, mon application vient remplir les tables. Mais la réplication ne récupère jamais ces données. Elles sont uniquement pour le client abonné. Certaines tables sont donc en téléchargement seule et d'autre, j'autorise à ajouter des champs.

    Le but est de proposer à nos clients une mise à jour de leur BDD (données et structure) à distance. Par contre, les données qu'ils saisissent, on s'en fout. Bien entendu, les modifications de la BDD ne doit pas tout chambouler les données déjà saisies par les clients.
    De plus, lors de l'installation d'un nouveau client, on crée l'abonnement et hop, ça lui crée sa BDD suivant le dernier Master. La réplication est configurée pour le Web et ça marche pas trop mal.

    Ensuite, j'ai d'autres erreurs. J'ajoute une contrainte sur une colonne d'une table. Je peux sauvegarder cette modif. Ouf! Mais lors de l'éxécution de la mise à jour de mon client abonné, j'ai l'erreur:
    Le script de schéma « if object_id(N'[Reference].[PAYS]') is not null exec('ALTER TABLE [Reference].[PAYS] WITH CHECK ADD
    CONSTRAINT [CK_PAYS] CHECK
    (([dbo].[CheckIdTraduction]([PAYS].[RefIdTraduction])=(1)))') » n'a pu être propagé vers l'abonné.


    J'espère que tout ça est compréhensible.
    Merci.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Pour ma part, j'aurai opté pour une réplication de fusion sur les tables de référence uniquement. Les autres tables ne devraient pas être répliquées (celles que les clients saisissent sur les abonnés, sans remontée vers le serveur). L'inconvénient est que les mises à jour de structure ne se font pas automatiquement, mais vous gagnerez en souplesse pour modifier la structure, il vous suffira de renvoyer des scripts SQL (CREATE, ALTER...) à passer sur les abonnés. Les données ainsi saisies ne seront pas supprimées.

    Plus généralement il me semble que la réplication de fusion est utile pour répliquer les données (et au travers, SQL Server propose des fonctions pour répliquer des éléments de structure). Néanmoins la fonctionnalité est surtout utile pour la réplication des données. Si les données de vos abonnés ne doivent pas remonter sur le serveur, il ne faut pas les inclure dans la publication je pense.

    Cdlt,
    Kevin

Discussions similaires

  1. Réplication de données MS-SQL
    Par malves dans le forum Réplications
    Réponses: 3
    Dernier message: 16/01/2008, 11h19
  2. Réplication de données MS-SQL
    Par malves dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/01/2008, 11h19
  3. Réplication de données via des MV entre 9i et 10g
    Par jml50 dans le forum Administration
    Réponses: 1
    Dernier message: 15/06/2007, 12h10
  4. Réplication de données ACCESS - ORACLE
    Par pyfux69 dans le forum Access
    Réponses: 2
    Dernier message: 01/03/2007, 21h50

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