Scenariusz
Aplikacja używana przez podróżujących przedstawicieli handlowych, lub innych pracowników działających w terenie, np. dostawców, pielęgniarki środowiskowe itp. jest zaprojektowana tak aby zbierać dane z różnych lokalizacji i następnie wysyłać je do centrum danych. Dodatkowo, od czasu do czasu dane z centrum danych muszą zostać wysłane do innych lokalizacji, aby zaktualizować te lokalizacje.
Na przykład kiedy pielęgniarka składa wizytę pacjentowi, to posługując się urządzeniem mobilnym wstawia do bazy danych informacje o wizycie. Na koniec dnia wszystkie utworzone rekordy są wysyłane do centralnej bazy danych. Dodatkowo, pielęgniarka synchronizuje urządzenie mobilne z centralną bazą danych w szpitalu, aby otrzymać nowe informacje o swoich pacjentach oraz o wizytach do złożenia następnego dnia.
W scenariuszu opisanym powyżej, istnieje ciągła konieczność synchronizowania danych między urządzeniem mobilnym a centralną bazą danych.
Rozwiązania
1. Użyj replikacji SQL Server’a. Replikacja pozwala synchronizować bazy danych przez kopiowanie i dystrybuowanie rekordów z jednej bazy do innej, jeśli bazy danych są w różnych lokalizacjach.
Replikacja baz danych posiada jednak pewne ograniczenia:
- Tylko w edycji Standard i Enterprise, SQL Server może działać jako Wydawca, więc jeśli używasz wersji SQL Server Express musisz kupić wyższą edycję.
- Nie można użyć SQL Server’a 2005 jako Wydawcy i jednocześnie SQL Server’a 2008 jako Subskrybenta w przypadku replikacji przez web.
- Wersja Dystrybutora musi być wyższa lub taka sama, jak wersja Wydawcy.
- Wersja Subskrybenta w replikacji transakcyjnej nie może różnić się o więcej niż 2 wersje od wersji Wydawcy, np. SQL Server 2000, będący wydawcą, nie może działać z Subskrybentami na SQL Server’rze 2012.
- Wersja Subskrybenta w replikacji scalanej (merge) musi być o jedną niższa lub równa wersji Wydawcy, np. SQL Server 2012, będący Subskrybentem, nie może korzystać z SQL Server’a 2008, jeśli pełni on rolę Wydawcy.
2. Użyj framework’a Sync, API które umożliwi napisanie własnej aplikacji do synchronizowania danych między bazami danych. API daje dużo możliwości, ale wymaga umiejętności programistycznych, testowania aplikacji, co zwiększa zarówno czas niezbędny do otrzymania gotowego rozwiązania jak i podnosi koszt jego wytworzenia.
3. Użyj ApexSQL Data Diff, narzędzia na SQL Server do porównywania i synchronizacji baz danych, wykrywania różnic między danymi oraz do bezbłędnego uzgadniania danych. Narzędzie pozwala porównywać i synchronizować bazy online, kopie zapasowe baz danych (także te skompresowane), generować raporty wynikowe o wykrytych różnicach, tworzyć plik synchronizujący i wykonać ten plik.
Jak to zrobić
Wyobraź sobie, ze masz w szpitalu bazę danych o nazwie Central, a pielęgniarka na swoim urządzeniu mobilnym ma bazę danych o nazwie Visits. Szpital dodaje nowe rekordy, informujące o wizytach do tablicy Visits, pielęgniarki codziennie rano synchronizują swoje urządzenia mobilne, aby otrzymać najnowsze dane o zaplanowanych dla nich wizytach. Rekordy wstawiane przez pielęgniarki w trakcie dnia zapisywane są w tablicy VisitReports.
- Uruchom ApexSQL Data Diff
- W sekcji Source, wybierz typ źródła Database, jako serwer wybierz serwer zainstalowany w centrum danych, jako bazę, wybierz bazę Central.
-
W sekcji Destination, wybierz typ źródła Database, urządzenie zdalne jako serwer (urządzenie mobilne pielęgniarki), i bazę, która będzie synchronizowana .
-
Kliknij przycisk Compare
Wszystkie tablice w bazie danych zostaną porównane i pokazane w głównym oknie narzędzia.
Rekordy wstawione do tablicy Visits w szpitalu wyświetlone są w zakładce Missing.
-
Zaznacz tablicę, którą chcesz zsynchronizować.
-
Kliknij Synchronize w zakładce Home.
- Kliknij Next w kroku Synchronization direction w Synchronization wizard.
-
W kroku Output options w Synchronization wizard, wybierz Synchronize a database jako końcową akcję.
- Kliknij Next
-
Sprawdź podsumowanie działań, które będą wykonane oraz przeanalizuj wszystkie ostrzeżenia.
- Kliknij przycisk Synchronize w zakładce Home.
-
Kliknij OK, aby potwierdzić wykonanie skryptu.
Gdy zostanie zakończona synchronizacja docelowej bazy danych, zostanie wyświetlony poniższy komunikat:
- Kliknij przycisk Save w zakładce Home projektu, aby zapamiętać ustawienia w projekcie i wykonać synchronizację każdego następnego dnia, przy pomocy tych samych ustawień.
Podobne kroki należy wykonać, jeżeli chcesz zsynchronizować rekordy dodane w ciągu dnia przez pielęgniarkę z centralną bazą danych.
-
Wybierz bazę na urządzeniu mobilnym w sekcji Source a bazę Central jako bazę docelową (sekcja Destination).
- Kliknij Compare
-
Wybierz tablicę, do której dodano rekordy w ciągu dnia. Rekordy zostaną wyświetlone z zakładce Missing.
- Kliknij przycisk Synchronize w menu.
- Przejdź przez kreatora Synchronization wizard i dodaj brakujące rekordy do bazy danych Central.
- Kliknij Save w zakładce Home projektu, aby zapamiętać ustawienia synchronizacji w projekcie i wykonać kolejną synchronizację przy pomocy tych samych ustawień.
Po zachowaniu projektu można zautomatyzować proces synchronizacji.
-
Zapamiętaj poniższą komendę jako plik wsadowy E:\Test\Morning.bat, który wykona utworzony projekt Morning_Central_Nurse.axdd:
"C:\Program files (x86)\ApexSQL\ApexSQLDataDiff2014\ApexSQLDataDiff.com" / pf:D: \Test\Morning_Central_Nurse.axdd / of:D: \Test\MorningSync.sql / sync / bu:D: \Test / v / f
Komenda utworzy skrypt MorningSync.sql w folderze D:\Test, który doda dane z bazy danych Central do bazy danych pielęgniarki, utworzy pełną kopię zapasową bazy danych pielęgniarki w folderze D:\Test, oraz wstawi brakujące rekordy do bazy danych pielęgniarki.
- Uruchom SQL Server Management Studio
-
W Object Explorer rozwiń SQL Server Agent, kliknij prawym przyciskiem myszy na Jobs i wybierz New job.
-
Określ nazwę zadania.
- Kliknij New w zakładce Steps, aby dodać nowy krok do zadania.
- Wybierz ”Operating system (CmdExec)” jako typ zadania, dodaj nazwę kroku, kliknij Open.
-
Wybierz zapisany plik wsadowy D:\Test\MorningSync.bat.
- Kliknij przycisk OK
-
Otwórz harmonogram w zakładce Schedules i zdecyduj kiedy należy uruchomić zadanie synchronizacji bazy danych.
Powtórz kroki 3 do 9, aby uruchomić zadanie synchronizacji SQL Server’a dla synchronizacji wieczornej.
Porównywanie i synchronizowanie baz danych SQL Server’a między różnymi lokalizacjami przy pomocy ApexSQL Data Diff, może być wykonywane bez względu na wersje SQL Server’a w lokalizacji centralnej i zdalnej, do poziomu poszczególnych rekordów i nie wymaga wiedzy programistycznej.
Tłumacz: Anna Lesniak
November 4, 2015