Lorsque deux bases de données ont radicalement différents schémas que vous devriez regarder les techniques de migration de données ou la réplication, pas de synchronisation. SQL Server fournit deux technologies pour cela, SSIS et la réplication, ou vous pouvez écrire votre propre script pour ce faire.
La réplication récupère les données nouvelles ou modifiées d'une base de données source et les copie dans une base de données cible. Il fournit des mécanismes pour la planification, l'empaquetage et la distribution des changements et peut gérer à la fois les mises à jour en temps réel et les mises à jour par lots. Pour fonctionner, il doit ajouter suffisamment d'informations dans les deux bases de données pour suivre les modifications et les lignes correspondantes. Dans votre cas, il serait difficile d'identifier quels «produits» ont changé, car vous auriez à identifier toutes les lignes modifiées pertinentes dans 4 tables différentes ou plus. Cela peut être fait, mais cela exigera des efforts. Dans tous les cas, vous devrez créer des vues qui correspondent au schéma cible, car la réplication n'autorise aucune transformation des données source. SSIS va extraire des données d'une source, les transformer et les pousser vers une cible. Il n'a aucun mécanisme intégré pour suivre les changements, vous devrez donc ajouter des champs à vos tables pour suivre les changements. C'est strictement un processus par lot qui peut fonctionner selon un calendrier. Le principal avantage est que vous pouvez effectuer une grande variété de transformations alors que la réplication ne permet quasiment aucune (sauf pour dessiner les données d'une vue). Vous pouvez créer des flux de données qui modifient uniquement le champ Produit concerné lorsqu'un enregistrement d'attribut lié au produit est modifié ou simplement reconstituer un enregistrement de produit entier et remplacer l'enregistrement cible.
Enfin, vous pouvez créer vos propres déclencheurs ou procédures stockées qui s'exécuteront lorsque les données seront modifiées et les copieront d'une base de données à l'autre.
Je tiens également à souligner que vous avez probablement sur-normalisé votre base de données. Dans les trois cas, vous aurez une certaine pénalité de performance lorsque vous joindrez toutes les tables pour reconstituer une entité, ce qui entraînera une plus grande quantité de verrouillage nécessaire et une utilisation inefficace des index. Vous sacrifiez les performances et l'évolutivité pour faciliter le changement. Vous devriez peut-être jeter un coup d'œil à la fonction de la colonne clairsemée de SQL Server 2008 pour prendre en charge les schémas flexibles tout en conservant les performances et l'évolutivité.
Est-ce que cela doit être en temps réel ou un processus Extract-Transform-Load de nuit? – Paolo
https://www.symmetricds.org/ est open source et je crois que devrait le faire – kervin