Włączanie subskrypcji odnawialnych replikacji transakcyjnej w programie SQL Server 2019

Data utworzenia strony :

Wprowadzenie i środki ostrożności

Ten artykuł jest przeznaczony do replikacji w programie SQL Server 2019. Jedną z funkcji w nim jest włączona "subskrypcja odnawialna".

Ta funkcja była domyślnie włączona w poprzednich wersjach programu SQL Server, ale została wyłączona od (prawdopodobnie) 2017 r.

Przyszłe wersje programu SQL Server mogą usunąć tę funkcję. Z wyjątkiem uaktualniania istniejącego środowiska, zalecamy zastąpienie go nową konstrukcją z replikacją scalającą itp.

odniesienie

środowisko

Użyj dwóch serwerów, jednego serwera i dwóch SQL Server. System Windows Server jest w stanie, w którym natychmiast po instalacji nie wprowadzono żadnych dodatkowych ustawień.

1. jednostka (strona publikacji)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Developer Edition (wymagana wersja Standard Edition lub nowsza)
  • SQL Server Management Studio 18.9.1
Druga jednostka (strona subskrybenta)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Express Edition
  • SQL Server Management Studio 18.9.1

cel

Nawet jeśli rekordy tabel w pierwszej lub drugiej bazie danych serwera są aktualizowane Upewnij się, że rekordy tabel na serwerach drugiej strony są zsynchronizowane.

Nawiasem mówiąc, jeden po stronie publikacji jest w porządku, ale strona subskrybenta może mieć dowolną liczbę jednostek. Działa również z wieloma wystąpieniami programu SQL Server na jednym serwerze.

Instalowanie programu SQL Server

Instalacja sql server nie jest główną częścią tych wskazówek, więc nie będę wchodził w szczegóły. Wymienione są tylko te istotne dla replikacji.

Instalacja po stronie publikacji wymaga wydania Standard Edition lub nowszego. Ta wskazówka instaluje developer edition jako środowisko testowe.

Subskrybenci są w porządku z Express Edition. Oczywiście inne edycje są w porządku, w zależności od konfiguracji DB.

W obszarze Wybór funkcji wybierz pozycję Usługa aparatu bazy danych i Replikacja programu SQL Server. Jest to takie samo zarówno dla strony publikacji, jak i strony subskrybenta.

Konfiguracja wystąpienia domyślnie to zarówno strona publikacji, jak i strona subskrybenta. Nawet jeśli zmienisz nazwę instancji, różnica polega na tym, czy nazwa wystąpienia zostanie określona w specyfikacji serwera później.

Po stronie publikacji skonfiguruj agenta programu SQL Server do automatycznego uruchamiania. To ustawienie można zmienić później.

Ta porada uwierzytelnia replikację za pomocą konta sa programu SQL Server. W związku z tym włącz uwierzytelnianie programu SQL Server. Jeśli nie chcesz używać konta sa ze względów bezpieczeństwa, zastąp część wyjaśnienia dotyczącą uwierzytelniania programu SQL Server uwierzytelnianiem systemu Windows lub innym kontem.

Ustaw to ustawienie tak samo na obu serwerach.

Instalowanie programu SQL Server Management Studio

Zainstaluj pobrany program SQL Server Management Studio. Ponieważ ekran instalacji służy tylko do instalacji, wyjaśnienie jest pomijane.

Uruchom ponownie system Windows, jeśli po zakończeniu instalacji zostanie wyświetlony monit o ponowne uruchomienie. Ponadto zainstaluj wszelkie poprawki w usłudze Windows Update.

Tworzenie bazy danych i tabel po stronie publikowania

Jeśli utworzysz tabelę po stronie publikacji, strona subskrybenta automatycznie zreplikuje tabelę lub rekord.

Metoda tworzenia jest taka sama jak normalna procedura, więc pominę szczegóły.

Tworzysz bazę danych o nazwie Publication DB w SQL Server Management Studio.

Utwórz tabelę o nazwie "Użytkownicy" i zarejestruj kolumny w następujący sposób: Wszystko, co musisz zrobić, to sprawdzić synchronizację rekordów, aby nazwa, numer i zawartość kolumny tabeli mogły być dowolne. Wymagany jest jednak tylko klucz podstawowy.

Dodaj kilka rekordów, aby upewnić się, że rekordy są synchronizowane po utworzeniu replikacji.

Konfigurowanie połączeń zdalnych

Skonfiguruj je tak, aby zezwalały na zdalny dostęp do baz danych serwerów drugiej strony. Szczegóły podsumowano w poniższych wskazówkach.

Ustawianie uprawnień do folderów

Na serwerze po stronie publikacji otwórz właściwości następującego folderu: Ścieżka folderu zależy od wersji programu SQL Server i nazwy wystąpienia.

  • C: \\ Program Files \\ Microsoft SQL Server \\ MSSQL15. MSSQLSERVER \\ MSSQL \\ ReplData

Na karcie Zabezpieczenia dodaj konto "SERVICE" i ustaw je na pełną kontrolę.

Konfigurowanie dystrybucji

Tym razem dystrybucja jest tworzona na tym samym serwerze co publikacja.

Uruchom program SQL Server Management Studio, kliknij prawym przyciskiem myszy pozycję Replikacja i wybierz polecenie Konfiguruj dystrybucję.

Kliknij przycisk Dalej.

Zaznacz < "Stwórz własny serwer > własnego dystrybutora".

Następnie kliknij "Dalej", aby go ukończyć.

Tworzenie publikacji

Pierwotnie jest on tworzony za pomocą kreatora, jak pokazano na poniższym rysunku: W programie SQL Server 2019 tworzenie za pomocą kreatora nie włącza "subskrypcji odnawialnych" i nie zezwala na synchronizację rekordów między tabelami.

Dlatego używamy T-SQL do tworzenia publikacji tutaj.

Poniżej przedstawiono język SQL służący do tworzenia publikacji z uwierzytelnianiem programu SQL Server: Zmień hasło zgodnie z ustawieniami.

-- トランザクションパブリケーションを追加するための宣言
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'パブリケーションDB'; 
SET @publication = N'パブリケーション'; 
SET @login = 'sa'; 
SET @password = 'saパスワード'; 

USE [パブリケーションDB]

-- パブリケーションデータベースでトランザクションレプリケーションを有効にする。
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- sp_addlogreader_agent を実行して、エージェントジョブを作成します。
EXEC sp_addlogreader_agent 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

-- 即時更新、キュー更新、およびプルサブスクリプションをサポートするトランザクションパブリケーションを作成します。
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_sync_tran = N'true', 
    @allow_queued_tran = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true',
    -- 関連するデフォルトのプロパティを明示的に宣言する
    @conflict_policy = N'pub wins';

-- デフォルトのスケジュールを使用して、パブリケーションの新しいスナップショットジョブを作成します。
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;
GO

Podczas korzystania z uwierzytelniania systemu Windows zmień części "sp_addlogreader_agent" i "sp_addpublication_snapshot" w następujący sposób.

Uwierzytelnianie programu SQL Server

    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

Uwierzytelnianie systemu Windows

    @job_login = @login, 
    @job_password = @password,
    @publisher_security_mode = 1;

Jeśli zostanie utworzony pomyślnie, zobaczysz następujące informacje:

Ponadto otwórz właściwości utworzonej publikacji i upewnij się, że "Subskrypcja odnawialna" jest włączona.

Określanie artykułów

Pierwotnie, jeśli utworzysz go za pomocą kreatora, określisz artykuł w tym samym czasie, Ponieważ powyższy skrypt nie obejmuje przetwarzania artykułów, jest on określony na podstawie właściwości.

Wybierz "Artykuły" z menu po lewej stronie, zaznacz tabelę, którą chcesz zsynchronizować, i kliknij przycisk OK.

Do kolumn tabeli, która ma być synchronizowana, dodawany jest msrepl_tran_version, a jednocześnie dodawany jest wyzwalacz tabeli.

Tworzenie subskrypcji

Kliknij prawym przyciskiem myszy właśnie utworzoną publikację i wybierz polecenie Nowa subskrypcja.

Kliknij przycisk Dalej.

Wybierz utworzoną publikację.

Zaznacz opcję Uruchom wszystkich agentów na serwerze Dystrybutor <nazwa serwera>.

Kliknij przycisk Dodaj subskrybenta programu SQL Server.

Określa serwer (+ nazwa instancji), który ma zostać zarejestrowany jako subskrybent.

Jeśli nie masz bazy danych subskrybentów, utwórz nową. Jeśli już istnieje, zaznacz go, ponieważ zostanie wyświetlony element zaznaczenia.

Po określeniu bazy danych kliknij przycisk Dalej.

Jeśli masz więcej niż jednego subskrybenta, możesz zarejestrować tutaj tyle, ilu potrzebujesz.

Kliknij przycisk "...".

Tutaj agent działa na koncie sa, ale ustaw go zgodnie ze swoim środowiskiem.

Wybierz opcję Uruchom w sposób ciągły.

Ustawienie "Subskrypcja odnawialna" powinno działać.

W przypadku "zatwierdzania zmian w tym samym czasie" jest on synchronizowany natychmiast, ale wszystkie serwery muszą być uruchomione.

"Kolejka zmienia się i zatwierdzaj, jeśli to możliwe" gromadzi zmiany w kolejce, więc są one zatwierdzane, gdy serwer jest uruchomiony, nawet jeśli serwer nie jest uruchomiony. Jednak czas synchronizacji jest powolny.

Zaznacz opcję Użyj wstępnie zdefiniowanego serwera połączonego lub zdalnego.

Wybierz teraz.

Kliknij przycisk Dalej.

Kliknij przycisk Zakończ.

Zamknij, jeśli nie ma błędów.

Po kilku chwilach widać, że baza danych została utworzona po stronie subskrybenta i że tabele również zostały utworzone.

Można sprawdzić, czy rekordy są również synchronizowane.

Jeśli po pewnym czasie nie zostanie zsynchronizowany, wykonaj następujące czynności.

Kliknij prawym przyciskiem myszy utworzoną subskrypcję i wybierz polecenie Ponownie zainicjuj.

Zaznacz "Użyj nowej migawki" i kliknij przycisk "Ustaw do ponownego zainicjowania".

Jeśli wystąpi błąd, spróbuj ponownie.

Kontrola operacji

Spróbuj dodać lub zmodyfikować tabele po stronie publikacji.

Poczekaj kilka sekund, aby upewnić się, że jest zsynchronizowany z subskrybentem.

Teraz zmodyfikujmy rekord po stronie subskrybenta.

Można sprawdzić, czy jest on zsynchronizowany ze stroną publikacji.

Jeśli masz zarejestrowanych wielu subskrybentów, upewnij się, że są oni zsynchronizowani między subskrybentami.