2016-12-06 2 views
0

Nous avons une base de données d'atelier OPERATION qui réplique les données sélectionnées dans une base de données BUSINESS utilisée pour la création de rapports. Les données dans OPERATION sont supprimées quotidiennement par l'application tierce partie de l'atelier afin de conserver les données sur BUSINESS J'ai défini la propriété d'article pour SUPPRIMER le format de livraison pour être Ne pas répliquer les instructions DELETE.Comment puis-je capturer une base de données sans perdre les données non supprimées?

Cela fonctionne bien, mais parfois quelqu'un veut que quelque chose de plus/différent soit répliqué. Selon la nature de la modification apportée à la publication, il se peut que vous demandiez la réinitialisation de l'instantané, ce qui, bien entendu, ferait sauter la base de données sur BUSINESS (comme je l'ai malheureusement fait un jour).

Quel est le meilleur moyen de contourner ce problème?

Répondre

1

Je vous suggère de mettre en œuvre un processus ETL au lieu de la réplication.

Vous pouvez utiliser SSIS pour extraire des données de la base de données OPERATION et les copier dans la base de données BUSINESS. Dans le package SSIS, vous avez un contrôle total sur la logique. Par exemple, vous pouvez ajouter les données aux données existantes dans BUSINESS. Vous pouvez utiliser MERGE pour insérer de nouveaux enregistrements et modifier ceux qui existent déjà (de cette façon, il serait prudent de l'exécuter plusieurs fois car les données non modifiées ne seraient pas remplacées).

Si quelqu'un demande des données supplémentaires, vous venez d'écrire un nouveau package SSIS pour transférer des données supplémentaires sans affecter votre processus principal.

SSIS peut être planifié pour s'exécuter à partir d'un travail d'agent SQL (utilisez par exemple dtexec).

+0

Il y a plusieurs raisons que je veux particulièrement coller à la réplication. 1. Son impact sur l'éditeur est faible, ce qui est important pour notre fonctionnement en temps réel. –

+0

2. L'heure à laquelle l'application tierce supprime des données de la base de données OPERATION n'est pas nécessairement cohérente. Dans le scénario que vous proposez, je pourrais potentiellement manquer la capture de certains enregistrements. –

+0

Ce que je suggérerais alors est de tout reproduire dans une base de données "staging", puis l'utiliser comme une source pour votre processus ETL à une base de données de rapports. De cette façon, vous auriez le meilleur des deux mondes. Réplication qui change rarement (uniquement en cas de modification de la base de données OPERATION) et contrôle total de ce qui est transféré vers la base de données BUSINESS. – under