2009-11-09 4 views
1

Nous souhaitons répliquer des données d'une base de données vers plusieurs autres (sur un autre serveur). Serait-il sensé de répliquer ces tables dans une base de données partagée sur l'autre serveur et de faire référence à la base de données partagée par nos requêtes cross-database ... ou aurait-il plus de sens de répliquer sur chaque base de données sur l'autre serveur? Est-ce que les jointures de bases de données croisées poseraient un problème de performance Les contraintes de bases de données croisées fonctionneraient-elles comme prévu? Répliquer une seule fois sur une base de données partagée améliorerait les performances de la réplication ... J'essaie d'évaluer si des performances affectées par des requêtes ou des contraintes inter-bases de données en valent la peine.Réplication SQL Server (requêtes et contraintes inter-base de données)

Éditer: Il semble que les contraintes de base de données croisées ne sont pas possibles dans le serveur sql? Si cela est vrai, alors nous aurions à répliquer dans chaque base de données

Répondre

2

Les requêtes de base de données croisées sont un peu plus lentes que dans le même DB. Les clés étrangères fonctionnent dans la même base de données uniquement. L'approche habituelle consiste à créer un schéma distinct dans chaque base de données (comme ETL), puis à répliquer ces tables dans ce schéma. Cette approche est en fait fréquemment utilisée lors de la réplication de tables de dimension entre des datamarts. Lorsque vous utilisez l'approche cross-db, utilisez des déclencheurs pour implémenter des contraintes. Cela peut être lent et compliqué. En fonction de votre application, vous pouvez implémenter des clés étrangères en tant que «logique uniquement» et exécuter des requêtes périodiques «Rechercher des orphelins» pour gérer l'intégrité référentielle.