Mam 8 pojedynczych maszyn SQL Server 2008 R2, każda hostująca 1 bazę danych. Każda baza danych ma identyczną strukturę i schemat tabeli oraz całkowicie unikalne dane.
Chciałbym ustanowić serwer raportowania (może być rok 2008 lub 2012), który konsoliduje wiersze z wybranych tabel na 8 serwerach źródłowych w jednym wystąpieniu tych tabel na serwerze raportowania. Jest to replikacja w jedną stronę (na serwerze raportowania nie zostaną wprowadzone żadne zmiany). Będę musiał replikować zmiany ze źródłowych baz danych ze stosunkowo niskim opóźnieniem (powiedzmy 20-30 sekund).
Ponadto chciałbym znaleźć metody osiągnięcia tego celu przy minimalnym wpływie na serwery źródłowe, jak to praktycznie możliwe. Zewnętrzne agenty, wyzwalacze lub mody schematów na tych serwerach są trudne w moim środowisku.
Moje pytania:
- Jakie są obiecujące architektury i technologie dla osiągnięcia tego celu?
- Obejrzałem replikację scalającą programu SQL Server, ale martwię się o opóźnienia. Czy jest to odpowiednia technologia do tego celu?
- Czy istnieją repliki transakcyjne typu wiele do jednego?
- Czy powinienem patrzeć na replikację 1 do 1 w 8 bazach danych na moim serwerze raportowania, a następnie na niestandardową funkcję scalania (replikacja 2-etapowa)?
Dzięki, John
źródło
Odpowiedzi:
Możesz to osiągnąć dzięki replikacji transakcyjnej . Poniżej możesz to zrobić.
Uwaga : Aby to osiągnąć, należy nieznacznie zmienić schemat tabeli, ponieważ należy jednoznacznie zidentyfikować te wiersze podczas replikacji do subskrybenta. Jako warunek T-Rep musisz zdefiniować tabele z PK.
Poniżej znajduje się przykładowa tabela na serwerach wydawcy, która znajduje się na wszystkich 8 serwerach, które chcesz skonsolidować wiersze na serwerze raportowania:
Na serwerze subskrybenta musisz utworzyć tę samą tabelę, ale z różnymi PK, aby jednoznacznie zidentyfikować wiersze u subskrybenta (w przeciwnym razie T-Rep nie powiedzie się z naruszeniem PK - Zakładam, że nie możesz zmodyfikować struktury PK na PRODUKCJA na żywo raczej lepiej zmodyfikować u subskrybenta)
Poniższy skrypt pomoże ci skonfigurować T-Rep, po prostu zmień nazwę bazy danych, nazwę serwera docelowego wraz z nazwą obiektu.
Kilka punktów do zapamiętania:
Upewnij się, że w sp_addsubscription
@sync_type = N'automatic'
I właściwości artykułu powinny być ustawione na:
Wreszcie możesz skonsolidować wiersze ze wszystkich (w moim przypadku 3 serwerów) jak poniżej:
Podsumowując
Utwórz tabelę dla subskrybenta, którego PK jest uwzględnione jako nazwa_serwera.
Utwórz replikację tabel za pomocą @sync_type = N'automatic 'i właściwości Article ustawionej na „Zachowaj istniejący obiekt bez zmian”.
Uruchom agenta migawki.
Sprawdź skonsolidowane dane dotyczące subskrybenta.
źródło