J'ai 8 machines individuelles SQL Server 2008 R2, chacune hébergeant 1 base de données. Chaque base de données a une structure et un schéma de table identiques, et des données entièrement uniques.
Je voudrais créer un serveur de rapports (peut être 2008 ou 2012), qui consolide les lignes des tables sélectionnées sur les 8 serveurs sources en une seule instance de ces tables sur le serveur de rapports. Il s'agit d'une réplication unidirectionnelle (aucune modification ne sera apportée au serveur de rapports). Je devrai répliquer les modifications des bases de données source avec une latence relativement faible (disons 20-30 secondes).
De plus, j'aimerais trouver des méthodes pour y parvenir avec le moins d'impact possible sur les serveurs source. Les agents, déclencheurs ou mods de schéma tiers sur ces serveurs sont difficiles dans mon environnement.
Mes questions:
- Quelles sont les architectures et technologies prometteuses pour atteindre cet objectif?
- J'ai examiné la réplication de fusion SQL Server, mais je suis préoccupé par la latence. Est-ce une technologie appropriée pour cet objectif?
- Existe-t-il des architectures plusieurs à un pour la réplication transactionnelle?
- Dois-je envisager une réplication 1 à 1 dans 8 bases de données sur mon serveur de rapports, suivie d'une fonction de fusion personnalisée (réplication en 2 étapes)?
Merci, John
la source
Réponses:
Vous pouvez y parvenir avec la réplication transactionnelle . Voici comment vous pouvez le faire.
Remarque : Vous devez modifier légèrement votre schéma de table pour y parvenir car vous devez identifier ces lignes de manière unique lorsque vous répliquez vers l'abonné. Comme condition préalable à T-Rep, vous devez avoir des tables avec PK définies.
Vous trouverez ci-dessous votre exemple de tableau sur les serveurs Publisher qui se trouve sur l'ensemble de vos 8 serveurs que vous souhaitez consolider les lignes sur le serveur de rapports:
Sur le serveur d'abonné , vous devez créer la même table mais avec des PK différents pour identifier de manière unique les lignes sur l'abonné (sinon, T-Rep va échouer avec une violation de PK - je suppose que vous ne pouvez pas modifier la structure de PK sur PRODUCTION en direct plutôt mieux à modifier chez l'abonné)
Le script ci-dessous vous aidera à configurer T-Rep, il suffit de changer le nom de la base de données, le nom du serveur de destination ainsi que le nom de l'objet.
Quelques points à noter:
Dans sp_addsubscription, assurez-vous que
@sync_type = N'automatic'
Et les propriétés de l'article doivent être définies sur:
Donc, finalement, vous pouvez consolider les lignes de tous (dans mon cas, 3 serveurs) comme ci-dessous:
Donc en résumé,
Créez une table sur l'abonné ayant PK inclus en tant que ServerName.
Créez la réplication des tables avec @sync_type = N'automatic 'et la propriété Article définie sur "Conserver l'objet existant inchangé".
Exécutez l'agent de capture instantanée.
Vérifiez les données consolidées sur l'abonné.
la source