Aktivera prenumerationer på transaktionsreplikering av förnybara filer i SQL Server 2019

Datum för skapande av sida :

Introduktion och försiktighetsåtgärder

Den här artikeln är avsedd för replikering i SQL Server 2019. En av funktionerna i den är "förnybar prenumeration" är aktiverad.

Den här funktionen aktiverades som standard i tidigare versioner av SQL Server, men har inaktiverats sedan (förmodligen) 2017.

Framtida versioner av SQL Server kan ta bort den här funktionen. Förutom att uppgradera en befintlig miljö rekommenderar vi att du ersätter den med ny konstruktion med sammanslagningsreplikering osv.

hänvisning

miljö

Använd två servrar, en server och två SQL Server. Windows Server är i ett tillstånd där inga ytterligare inställningar har gjorts omedelbart efter installationen.

1:a enheten (publikationssidan)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Developer Edition (Standard Edition eller högre krävs)
  • SQL Server Management Studio 18.9.1
Andra enheten (abonnentsidan)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Express-utgåvan
  • SQL Server Management Studio 18.9.1

avsikt

Även om tabellposter i antingen den första eller andra serverdatabasen uppdateras Kontrollera att tabellposter på varandras servrar synkroniseras.

Förresten är en på publikationssidan bra, men abonnentsidan kan ha valfritt antal enheter. Det fungerar också med flera instanser av SQL Server på en enda server.

Installera SQL Server

Installera SQL Server är inte huvuddelen av dessa tips, så jag kommer inte att gå in på detaljer. Endast de som är relevanta för replikering visas.

För att installera publikationssidan krävs Standard Edition eller högre. I det här tipset installeras Developer Edition som en testmiljö.

Prenumeranter har det bra med Express Edition. Naturligtvis är andra utgåvor bra, beroende på DB-konfigurationen.

För Funktionsval väljer du Databasmotortjänst och SQL Server replikering. Detta är detsamma för både publikationssidan och abonnentsidan.

Instanskonfiguration är som standard både publiceringssidan och prenumerantsidan. Även om du ändrar instansnamnet är skillnaden om du anger instansnamnet i serverspecifikationen senare.

På publiceringssidan konfigurerar du SQL Server Agent så att den startar automatiskt. Du kan ändra den här inställningen senare.

Det här tipset autentiserar replikeringen med SQL Server sa-kontot. Aktivera därför SQL Server autentisering. Om du av säkerhetsskäl inte vill använda sa-kontot ersätter du SQL Server-autentiseringsdelen av förklaringen senare med Windows-autentisering eller ett annat konto.

Gör den här inställningen densamma på båda servrarna.

Installera SQL Server Management Studio

Installera SQL Server Management Studio som du laddade ned. Eftersom installationsskärmen bara ska installeras utelämnas förklaringen.

Starta om Windows om du uppmanas att starta om efter installationen. Installera också eventuella korrigeringar i Windows Update.

Skapa en databas och tabeller på publiceringssidan

Om du skapar en tabell på publiceringssidan replikerar prenumerantsidan automatiskt tabellen eller posten.

Metoden för skapande är densamma som det normala förfarandet, så jag kommer att utelämna detaljerna.

Du skapar en databas med namnet Publication DB i SQL Server Management Studio.

Skapa en tabell med namnet "Användare" och registrera kolumnerna på följande sätt: Allt du behöver göra är att kontrollera synkroniseringen av poster, så att tabellens namn, nummer och kolumninnehåll kan vara vad som helst. Endast primärnyckeln krävs dock.

Lägg till några poster för att se till att posterna synkroniseras när replikeringen har skapats.

Konfigurera fjärranslutningar

Konfigurera dem för att tillåta fjärråtkomst till varandras servrars databaser. Detaljer sammanfattas i följande tips.

Ställa in mappbehörigheter

Öppna egenskaperna för följande mapp på servern på publiceringssidan: Mappsökvägen beror på versionen av SQL Server och instansnamnet.

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

På fliken Säkerhet lägger du till "SERVICE" -kontot och ställer in det på full kontroll.

Konfigurera distributionen

Den här gången skapas distributionen på samma server som publikationen.

Starta SQL Server Management Studio, högerklicka på Replikering och välj Konfigurera distribution.

Klicka på Nästa.

Markera < "Skapa din egen server > din egen distributör".

Klicka sedan på "Nästa" som det är för att slutföra det.

Skapa en publikation

Ursprungligen skapas den från guiden som visas i följande bild, I SQL Server 2019 aktiverar inte skapande från en guide "förnybara prenumerationer" och tillåter inte synkronisering av poster mellan tabeller.

Därför använder vi T-SQL för att skapa publikationen här.

Följande är SQL för att skapa en publikation med SQL Server autentisering: Ändra lösenordet enligt dina inställningar.

-- トランザクションパブリケーションを追加するための宣言
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

När du använder Windows-autentisering ändrar du delarna "sp_addlogreader_agent" och "sp_addpublication_snapshot" enligt följande.

SQL Server autentisering

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

Windows-autentisering

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

Om det har skapats framgångsrikt ser du följande:

Öppna också egenskaperna för den skapade publikationen och se till att "Förnybar prenumeration" är aktiverad.

Specificera artiklar

Ursprungligen, om du skapar den med en guide, kommer du att ange artikeln samtidigt, Eftersom ovanstående skript inte innehåller artikelbearbetning anges det från egenskapen.

Välj "Artiklar" från menyn till vänster, kontrollera tabellen du vill synkronisera och klicka på OK-knappen.

En msrepl_tran_version läggs till i kolumnerna i tabellen som ska synkroniseras och en tabellutlösare läggs till samtidigt.

Skapa en prenumeration

Högerklicka på publikationen du just skapade och välj Ny prenumeration.

Klicka på Nästa.

Välj den publikation som du skapade.

Markera Kör alla agenter på Distributör <servernamn>.

Klicka på knappen Lägg till SQL Server prenumerant.

Anger servern (+ instansnamnet) som ska registreras som prenumerant.

Om du inte har en prenumerantdatabas skapar du en ny. Om det redan finns markerar du det eftersom markeringsobjektet visas.

När du har angett databasen klickar du på Nästa.

Om du har mer än en prenumerant kan du registrera så många du behöver här.

Klicka på knappen "..." .

Här körs agenten under sa-kontot, men ange det enligt din miljö.

Välj Kör kontinuerligt.

Inställningen "Förnybar prenumeration" bör fungera.

Vid "begå ändringar samtidigt" synkroniseras det omedelbart, men alla servrar måste köras.

"Kö ändras och genomför om möjligt" ackumulerar ändringar i kön, så att de genomförs när servern körs, även om servern inte körs. Synkroniseringstiden är dock långsam.

Markera Använd en fördefinierad länkad server eller fjärrserver.

Välj Nu.

Klicka på Nästa.

Klicka på knappen Slutför.

Stäng om det inte finns några fel.

Efter en liten stund kan du se att databasen har skapats på prenumerantsidan och att tabellerna också har skapats.

Du kan kontrollera att posterna också synkroniseras.

Om det inte synkroniseras efter ett tag, gör följande.

Högerklicka på den skapade prenumerationen och välj Initiera om.

Markera "Använd ny ögonblicksbild" och klicka på knappen "Ställ in för att initiera om".

Om ett fel inträffar försöker du igen.

Kontroll av drift

Försök att lägga till eller ändra tabeller på publikationssidan.

Vänta några sekunder eller så för att se till att den synkroniseras med abonnenten.

Låt oss nu ändra posten på abonnentsidan.

Du kan kontrollera att den är synkroniserad till publiceringssidan.

Om du har flera prenumeranter registrerade kontrollerar du att de synkroniseras mellan prenumeranter.