Aktivér transaktionsreplikeringsabonnementer, der kan fornyes, i SQL Server 2019

Dato for oprettelse af side :

Indledning og forholdsregler

Denne artikel er beregnet til replikering i SQL Server 2019. En af funktionerne i den er "vedvarende abonnement" er aktiveret.

Denne funktion var som standard aktiveret i tidligere versioner af SQL Server, men har været deaktiveret siden (sandsynligvis) 2017.

Fremtidige versioner af SQL Server kan fjerne denne funktion. Bortset fra opgradering af et eksisterende miljø anbefaler vi, at du erstatter det med nybyggeri med flettereplikation osv.

henvisning

miljø

Brug to servere, en server og to SQL Server. Windows Server er i en tilstand, hvor der ikke er foretaget yderligere indstillinger umiddelbart efter installationen.

1. enhed (publikationsside)
  • Standardudgave af Windows Server 2019
  • SQL Server 2019 Developer Edition (Standard Edition eller nyere påkrævet)
  • SQL Server Management Studio 18.9.1
Anden enhed (abonnentsiden)
  • Standardudgave af Windows Server 2019
  • SQL Server 2019 Express Edition
  • SQL Server Management Studio 18.9.1

formål

Også selvom tabelposter i enten den første eller den anden serverdatabase opdateres Sørg for, at tabelposter på hinandens servere synkroniseres.

Forresten er en på publikationssiden fin, men abonnentsiden kan have et vilkårligt antal enheder. Det fungerer også med flere forekomster af SQL Server på en enkelt server.

Installation af SQL Server

Installation af SQL Server er ikke hoveddelen af disse tip, så jeg vil ikke gå i detaljer. Kun dem, der er relevante for replikering, er angivet.

Installation af publikationssiden kræver Standard Edition eller højere. Dette tip installerer Developer Edition som et testmiljø.

Abonnenter har det fint med Express Edition. Selvfølgelig er andre udgaver fine, afhængigt af DB-konfigurationen.

For Valg af funktion skal du vælge Database Engine Service og SQL Server Replication. Dette er det samme for både publikationssiden og abonnentsiden.

Instanskonfiguration er som standard både publikationssiden og abonnentsiden. Selvom du ændrer instansnavnet, er forskellen, om du angiver instansnavnet i serverspecifikationen senere.

På publikationssiden skal du konfigurere SQL Server Agent til at starte automatisk. Du kan ændre denne indstilling senere.

Dette tip godkender replikering med SQL Server sa-kontoen. Aktivér derfor SQL Server-godkendelse. Hvis du ikke vil bruge sa-kontoen af sikkerhedsmæssige årsager, skal du erstatte SQL Server-godkendelsesdelen af forklaringen senere med Windows-godkendelse eller en anden konto.

Gør denne indstilling den samme på begge servere.

Installation af SQL Server Management Studio

Installer det SQL Server Management Studio, du downloadede. Da installationsskærmen kun skal installeres, udelades forklaringen.

Genstart Windows, hvis du bliver bedt om at genstarte efter installationen. Installer også eventuelle programrettelser i Windows Update.

Oprette en database og tabeller på publiceringssiden

Hvis du opretter en tabel på publikationssiden, replikerer abonnentsiden automatisk tabellen eller posten.

Oprettelsesmetoden er den samme som den normale procedure, så jeg vil udelade detaljerne.

Du opretter en database med navnet Publication DB i SQL Server Management Studio.

Opret en tabel med navnet "Brugere", og registrer kolonnerne som følger: Alt du skal gøre er at kontrollere synkroniseringen af poster, så tabellens navn, nummer og kolonneindhold kan være hvad som helst. Det er dog kun den primære nøgle, der kræves.

Tilføj et par poster for at sikre, at posterne synkroniseres, når replikeringen er oprettet.

Konfiguration af fjernforbindelser

Konfigurer dem til at tillade fjernadgang til hinandens servere' databaser. Detaljer er opsummeret i følgende tips.

Indstilling af mappetilladelser

Åbn egenskaberne for følgende mappe på serveren på publikationssiden: Mappestien afhænger af versionen af SQL Server og instansnavnet.

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

Fra fanen Sikkerhed skal du tilføje "SERVICE" -kontoen og indstille den til fuld kontrol.

Konfiguration af distributionen

Denne gang oprettes distributionen på samme server som publikationen.

Start SQL Server Management Studio, højreklik på Replikering, og vælg Konfigurer distribution.

Klik på Næste.

Marker "Lav din egen server > din egen distributør" <.

Klik derefter på "Næste", som det er for at fuldføre det.

Oprettelse af en publikation

Oprindeligt er den oprettet fra guiden som vist i følgende figur, I SQL Server 2019 aktiverer oprettelse fra en guide ikke "fornyelige abonnementer" og tillader ikke synkronisering af poster mellem tabeller.

Derfor bruger vi T-SQL til at oprette publikationen her.

Følgende er SQL til oprettelse af en publikation med SQL Server-godkendelse: Skift adgangskoden i henhold til dine indstillinger.

-- トランザクションパブリケーションを追加するための宣言
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 bruger Windows-godkendelse, skal du ændre delene "sp_addlogreader_agent" og "sp_addpublication_snapshot" som følger.

SQL Server-godkendelse

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

Windows-godkendelse

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

Hvis det oprettes med succes, vil du se følgende:

Åbn også egenskaberne for den oprettede publikation, og sørg for, at "Fornyeligt abonnement" er aktiveret.

Angivelse af artikler

Oprindeligt, hvis du opretter den med en guide, vil du angive artiklen på samme tid, Da ovenstående script ikke omfatter artikelbehandling, er det angivet fra ejendommen.

Vælg "Artikler" i menuen til venstre, kontroller den tabel, du vil synkronisere, og klik på OK-knappen.

Der føjes en msrepl_tran_version til kolonnerne i den tabel, der skal synkroniseres, og der tilføjes en tabeludløser på samme tid.

Opret et abonnement

Højreklik på den publikation, du lige har oprettet, og vælg Nyt abonnement.

Klik på Næste.

Vælg den publikation, du har oprettet.

Markér Kør alle agenter på Distributør <servernavn>.

Klik på knappen Tilføj SQL Server-abonnent.

Angiver den server (+ instansnavn), der skal registreres som abonnent.

Hvis du ikke har en abonnentdatabase, skal du oprette en ny. Hvis det allerede findes, skal du vælge det, fordi markeringselementet vises.

Når du har angivet databasen, skal du klikke på Næste.

Hvis du har mere end én abonnent, kan du registrere så mange, som du har brug for her.

Klik på knappen "..."

Her kører agenten under sa-kontoen, men indstil den i henhold til dit miljø.

Vælg Kør kontinuerligt.

Indstillingen "Fornyeligt abonnement" skal være operationel.

I tilfælde af "begå ændringer på samme tid" synkroniseres det straks, men alle servere skal køre.

"Kø ændringer og begå, hvis det er muligt" akkumulerer ændringer i køen, så de begås, når serveren kører, selvom serveren ikke kører. Synkroniseringstimingen er dog langsom.

Markér Brug en foruddefineret sammenkædet eller ekstern server.

Vælg Nu.

Klik på Næste.

Klik på knappen Udfør.

Luk, hvis der ikke er nogen fejl.

Efter et øjeblik kan du se, at databasen er oprettet på abonnentsiden, og at tabellerne også er oprettet.

Du kan kontrollere, at posterne også er synkroniseret.

Hvis det ikke synkroniseres efter et stykke tid, skal du gøre følgende.

Højreklik på det oprettede abonnement, og vælg Reinitialize.

Marker "Brug nyt øjebliksbillede", og klik på knappen "Indstil til at reinitalisere".

Hvis der opstår en fejl, kan du prøve igen.

Kontrol af drift

Prøv at tilføje eller redigere tabeller på publikationssiden.

Vent et par sekunder eller deromkring for at sikre, at den er synkroniseret med abonnenten.

Lad os nu ændre posten på abonnentsiden.

Du kan kontrollere, at den er synkroniseret med publikationssiden.

Hvis du har registreret flere abonnenter, skal du sørge for, at de er synkroniseret mellem abonnenter.