Abonnementen voor hernieuwbare transactionele replicatie inschakelen in SQL Server 2019
Inleiding en voorzorgsmaatregelen
Dit artikel is bedoeld voor replicatie in SQL Server 2019. Een van de functies daarin is "verlengbaar abonnement" is ingeschakeld.
Deze functie was standaard ingeschakeld in eerdere versies van SQL Server, maar is uitgeschakeld sinds (waarschijnlijk) 2017.
Toekomstige versies van SQL Server kunnen deze functie verwijderen. Behalve voor het upgraden van een bestaande omgeving, raden we u aan deze te vervangen door nieuwbouw met merge-replicatie, enz.
- referentie
milieu
Gebruik twee servers, één server en twee SQL Server. Windows Server bevindt zich in een toestand waarin direct na de installatie geen aanvullende instellingen zijn gemaakt.
- 1e eenheid (publicatiezijde)
-
- Windows Server 2019 Standard Edition
- SQL Server 2019 Developer Edition (Standard Edition of hoger vereist)
- SQL Server Management Studio 18.9.1
- Tweede eenheid (abonneezijde)
-
- Windows Server 2019 Standard Edition
- SQL Server 2019 Express-editie
- SQL Server Management Studio 18.9.1
doel
Zelfs als tabelrecords in de eerste of tweede serverdatabase worden bijgewerkt Zorg ervoor dat tabelrecords op elkaars servers worden gesynchroniseerd.
Trouwens, een aan de publicatiekant is prima, maar de abonneekant kan een willekeurig aantal eenheden hebben. Het werkt ook met meerdere exemplaren van SQL Server op één server.
SQL Server installeren
Het installeren van SQL Server is niet het belangrijkste onderdeel van deze tips, dus ik zal niet in detail treden. Alleen die welke relevant zijn voor replicatie worden vermeld.
Voor het installeren van de publicatiezijde is Standard Edition of hoger vereist. Met deze tips wordt Developer Edition geïnstalleerd als testomgeving.
Abonnees zijn prima met Express Edition. Natuurlijk zijn andere edities prima, afhankelijk van de DB-configuratie.
Selecteer bij Functieselectie de optie Database Engine Service en SQL Server Replication. Dit is hetzelfde voor zowel de publicatiekant als de abonneekant.
Instantieconfiguratie heeft standaard zowel de publicatiezijde als de abonneezijde. Zelfs als u de instantienaam wijzigt, is het verschil of u de instantienaam later in de serverspecificatie opgeeft.
Configureer SQL Server Agent aan de publicatiezijde om automatisch te starten. U kunt deze instelling later wijzigen.
Met deze tip wordt replicatie geverifieerd met het SQL Server sa-account. Schakel daarom SQL Server-verificatie in. Als u het sa-account om veiligheidsredenen niet wilt gebruiken, vervangt u het SQL Server-verificatiegedeelte van de uitleg later door Windows-verificatie of een ander account.
Maak deze instelling op beide servers hetzelfde.
SQL Server Management Studio installeren
Installeer de SQL Server Management Studio die u hebt gedownload. Aangezien het installatiescherm alleen te installeren is, wordt de uitleg weggelaten.
Start Windows opnieuw op als u na de installatie wordt gevraagd opnieuw op te starten. Installeer ook eventuele patches in Windows Update.
Een database en tabellen aan de publicatiezijde maken
Als u een tabel maakt aan de publicatiezijde, repliceert de abonneezijde automatisch de tabel of record.
De methode van creatie is hetzelfde als de normale procedure, dus ik zal de details weglaten.
U maakt een database met de naam Publicatie DB in SQL Server Management Studio.
Maak een tabel met de naam "Gebruikers" en registreer de kolommen als volgt: Het enige dat u hoeft te doen, is de synchronisatie van records controleren, zodat de naam, het nummer en de kolominhoud van de tabel van alles kunnen zijn. Alleen de primaire sleutel is echter vereist.
Voeg een paar records toe om ervoor te zorgen dat de records worden gesynchroniseerd nadat de replicatie is gemaakt.
Externe verbindingen configureren
Configureer ze om externe toegang tot de databases van elkaars servers toe te staan. Details worden samengevat in de volgende tips.
Mapmachtigingen instellen
Open op de server aan de publicatiezijde de eigenschappen van de volgende map: Het mappad is afhankelijk van de versie van SQL Server en de instantienaam.
- C:\Program Files\Microsoft SQL Server\MSSQL15. MSSQLSERVER \\ MSSQL \\ ReplData
Voeg op het tabblad Beveiliging het account "SERVICE" toe en stel het in op volledig beheer.
De distributie configureren
Deze keer wordt de distributie gemaakt op dezelfde server als de publicatie.
Start SQL Server Management Studio, klik met de rechtermuisknop op Replicatie en selecteer Distributie configureren.
Klik op Volgende.
Vink "Maak uw eigen server > uw eigen distributeur" aan <.
Klik daarna op "Volgende" zoals het is om het te voltooien.
Een publicatie maken
Oorspronkelijk is het gemaakt van de wizard zoals weergegeven in de volgende afbeelding, In SQL Server 2019 schakelt het maken vanuit een wizard 'verlengbare abonnementen' niet in en staat het synchroniseren van records tussen tabellen niet toe.
Daarom gebruiken we T-SQL om de publicatie hier te maken.
Het volgende is SQL voor het maken van een publicatie met SQL Server-verificatie: Wijzig het wachtwoord volgens uw instellingen.
-- トランザクションパブリケーションを追加するための宣言
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
Wanneer u Windows-verificatie gebruikt, wijzigt u de onderdelen 'sp_addlogreader_agent' en 'sp_addpublication_snapshot' als volgt.
SQL Server-verificatie
@publisher_login = @login,
@publisher_password = @password,
@publisher_security_mode = 0;
Windows-verificatie
@job_login = @login,
@job_password = @password,
@publisher_security_mode = 1;
Als het met succes is gemaakt, ziet u het volgende:
Open ook de eigenschappen van de gemaakte publicatie en zorg ervoor dat 'Abonnement op doornieuwbaar abonnement' is ingeschakeld.
Artikelen specificeren
Oorspronkelijk, als u het met een wizard maakt, geeft u het artikel tegelijkertijd op, Aangezien het bovenstaande script geen artikelverwerking bevat, wordt het opgegeven vanuit de eigenschap.
Selecteer "Artikelen" in het menu aan de linkerkant, vink de tabel aan die u wilt synchroniseren en klik op de knop OK.
Er wordt een msrepl_tran_version toegevoegd aan de kolommen van de tabel die moet worden gesynchroniseerd en tegelijkertijd wordt een tabeltrigger toegevoegd.
Een abonnement maken
Klik met de rechtermuisknop op de publicatie die u zojuist hebt gemaakt en selecteer Nieuw abonnement.
Klik op Volgende.
Selecteer de publicatie die u hebt gemaakt.
Schakel Het selectievakje Alle agents uitvoeren op Distributeur <servernaam> in.
Klik op de knop SQL Server-abonnee toevoegen.
Hiermee geeft u de server (+ instantienaam) op die als abonnee moet worden geregistreerd.
Als u geen abonneedatabase hebt, maakt u een nieuwe. Als het al bestaat, selecteert u het omdat het selectie-item wordt weergegeven.
Nadat u de database hebt opgegeven, klikt u op Volgende.
Als u meer dan één abonnee heeft, kunt u er hier zoveel registreren als u nodig hebt.
Klik op de knop "..."
Hier draait de agent onder het sa-account, maar stel het in op basis van uw omgeving.
Selecteer Continu uitvoeren.
De instelling "Abonnement op hernieuwbare energie" moet operationeel zijn.
In het geval van "wijzigingen tegelijkertijd doorvoeren", wordt het onmiddellijk gesynchroniseerd, maar alle servers moeten actief zijn.
"Queue changes and commit if possible" verzamelt wijzigingen in de wachtrij, zodat ze worden vastgelegd wanneer de server wordt uitgevoerd, zelfs als de server niet actief is. De synchronisatietiming is echter traag.
Schakel het selectievakje Een vooraf gedefinieerde gekoppelde of externe server gebruiken in.
Selecteer Nu.
Klik op Volgende.
Klik op de knop Voltooien.
Sluit als er geen fouten zijn.
Na enkele ogenblikken kunt u zien dat de database aan de abonneekant is gemaakt en dat de tabellen ook zijn gemaakt.
U kunt controleren of de records ook zijn gesynchroniseerd.
Als het na een tijdje niet synchroniseert, doet u het volgende.
Klik met de rechtermuisknop op het gemaakte abonnement en selecteer Opnieuw initialiseren.
Vink "Nieuwe momentopname gebruiken" aan en klik op de knop "Instellen om opnieuw te initialiseren".
Als er een fout optreedt, probeert u het opnieuw.
Controle van de werking
Probeer tabellen aan de publicatiezijde toe te voegen of te wijzigen.
Wacht ongeveer een paar seconden om ervoor te zorgen dat het is gesynchroniseerd met de abonnee.
Laten we nu de record aan de abonneekant wijzigen.
U kunt controleren of het is gesynchroniseerd met de publicatiezijde.
Als u meerdere abonnees hebt geregistreerd, moet u ervoor zorgen dat deze worden gesynchroniseerd tussen abonnees.