Dela via


Transaktionsreplikering

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Den här artikeln beskriver transaktionsreplikering för SQL Server. Transaktionsreplikering börjar vanligtvis med en ögonblicksbild av publikationsdatabasobjekten och data. Så snart den första ögonblicksbilden tas levereras vanligtvis efterföljande dataändringar och schemaändringar som görs i Publisher till prenumeranten när de inträffar (nästan i realtid). Dataändringarna tillämpas på Prenumeranten i samma ordning och inom samma transaktionsgränser som de inträffade i Publisher. I en publikation garanteras därför transaktionskonsekvens.

Översikt

Transaktionsreplikering används vanligtvis i server-till-server-miljöer och är lämplig i vart och ett av följande fall:

  • Du vill att inkrementella ändringar ska spridas till Prenumeranter när de sker.

  • Programmet kräver låg svarstid mellan den tid då ändringarna görs i Utgivaren och ändringarna kommer till prenumeranten.

  • Programmet kräver åtkomst till mellanliggande datatillstånd. Om till exempel en rad ändras fem gånger tillåter transaktionsreplikering att ett program svarar på varje ändring (till exempel utlöser en utlösare), inte bara nettodataändringen till raden.

  • Publisher har en mycket hög volym av infognings-, uppdaterings- och borttagningsaktivitet.

  • Utgivaren eller prenumeranten är en icke-SQL Server-databas, till exempel Oracle.

Som standard ska prenumeranter på transaktionspublikationer behandlas som om de vore skrivskyddade eftersom ändringar inte sprids tillbaka till utgivaren. Transaktionsreplikering erbjuder dock alternativ som tillåter uppdateringar hos prenumeranten.

Anmärkning

Azure SQL Managed Instance kan vara utgivare, distributör och prenumerant för replikering av ögonblicksbilder och transaktioner. Databaser i Azure SQL Database kan bara skicka prenumeranter för ögonblicksbilder och transaktionsreplikering. Mer information finns i Transaktionsreplikering med Azure SQL Database och Azure SQL Managed Instance.

Konfigurera TLS 1.3-kryptering

Förhandsversionen av SQL Server 2025 (17.x) introducerar TDS 8.0-stöd för transaktionsreplikering, vilket omfattar:

  • Konfigurera replikeringsagenter att använda TLS 1.3-kryptering mellan instanser av SQL Server 2025 (17.x) Preview och även mellan SQL Server 2025 (17.x) Preview och Azure SQL Managed Instance.
  • Standardkryptering för länkad serverkommunikation mellan instanser mellan SQL Server 2025 (17.x) Förhandsversionsinstanser i en replikeringstopologi. Länkade servrar i SQL Server 2025 (17.x) Preview använder OLE DB v19-drivrutinen, som standard är Encrypt=Mandatory kryptering.

Så här fungerar transaktionsreplikering

Transaktionsreplikering implementeras av SQL Server Snapshot Agent, Log Reader Agent och Distribution Agent. Ögonblicksbildsagenten förbereder ögonblicksbildsfiler som innehåller schema och data för publicerade tabeller och databasobjekt, lagrar filerna i mappen ögonblicksbild och registrerar synkroniseringsjobb i distributionsdatabasen på distributören.

Loggläsaragenten övervakar transaktionsloggen för varje databas som konfigurerats för transaktionsreplikering och kopierar transaktionerna som har markerats för replikering från transaktionsloggen till distributionsdatabasen, vilket fungerar som en tillförlitlig kö för lagring och vidarebefordran. Distributionsagenten kopierar de första ögonblicksbildfilerna från ögonblicksbildmappen och transaktionerna som finns i distributionsdatabastabellerna till Prenumeranter.

Inkrementella ändringar hos Publicerare skickas till Prenumeranter enligt distributionsagentens schema: vilket kan köras kontinuerligt för minimal fördröjning eller med schemalagda intervall. Eftersom ändringar av data måste göras i Publisher (när transaktionsreplikering används utan omedelbar uppdatering eller köade uppdateringsalternativ) undviks uppdateringskonflikter. I slutändan uppnår alla prenumeranter samma värden som utgivaren. Om alternativ för omedelbar uppdatering eller köuppdatering används med transaktionsreplikering kan uppdateringar göras hos prenumeranten, och konflikter kan uppstå i kö.

Följande bild visar huvudkomponenterna i transaktionsreplikering.

Transaktionsreplikeringskomponenter och dataflöde

Inledande datauppsättning

Innan en ny transaktionsreplikeringsprenumerant kan ta emot inkrementella ändringar från en utgivare måste prenumeranten innehålla tabeller med samma schema och data som tabellerna i Publisher. Den första datamängden är vanligtvis en ögonblicksbild som skapas av ögonblicksbildsagenten och distribueras och tillämpas av distributionsagenten. Den första datauppsättningen kan också tillhandahållas via en säkerhetskopia eller på annat sätt, till exempel SQL Server Integration Services.

När ögonblicksbilder distribueras och tillämpas på prenumeranter påverkas endast de prenumeranter som väntar på inledande ögonblicksbilder. Andra prenumeranter på den publikationen (de som redan har initierats) påverkas inte.

Samtidig bearbetning av ögonblicksbilder

Replikering av ögonblicksbilder placerar delade lås på alla tabeller som publicerats som en del av replikeringen under tiden ögonblicksbildsgenereringen pågår. Detta kan förhindra att uppdateringar görs i publiceringstabellerna. Samtidig bearbetning av ögonblicksbilder, standardvärdet för transaktionsreplikering, håller inte resurslåsen på plats under hela ögonblicksbildsgenereringen, vilket gör att användarna kan fortsätta arbeta oavbrutet medan replikeringen skapar initiala ögonblicksbildfiler.

Ögonblicksagent

De procedurer med vilka Ögonblicksbildsagenten implementerar den första ögonblicksbilden i transaktionsreplikering är samma procedurer som används i replikering av ögonblicksbilder (förutom som beskrevs tidigare när det gäller samtidig bearbetning av ögonblicksbilder).

När ögonblicksbildfilerna har genererats kan du visa dem i mappen ögonblicksbild med hjälp av Microsoft Windows Explorer.

Ändra data och loggläsaragenten

Loggläsaragenten körs på distributören; Den körs vanligtvis kontinuerligt, men kan också köras enligt ett schema som du upprättar. Vid körning läser Log Reader Agent först transaktionsloggen för publikationen (samma databaslogg som används för transaktionsspårning och återställning under vanliga SQL Server Database Engine-åtgärder) och identifierar eventuella INSERT-, UPDATE- och DELETE-instruktioner eller andra ändringar som gjorts i data i transaktioner som har markerats för replikering. Därefter kopierar agenten dessa transaktioner i batchar till distributionsdatabasen på distributören. Log Reader Agent använder den interna lagrade proceduren sp_replcmds för att hämta nästa uppsättning kommandon som har markerats för replikering från loggen. Distributionsdatabasen blir sedan kön för lagring och vidarebefordran från vilken ändringar skickas till Prenumeranter. Endast slutförda transaktioner skickas till distributionsdatabasen.

När hela omgången med transaktioner har skrivits till distributionsdatabasen bekräftas den. Efter incheckningen av varje kommandobatch till distributören anropar Log Reader Agent sp_repldone för att markera var replikeringen senast slutfördes. Slutligen markerar agenten raderna i transaktionsloggen som är redo att rensas. Rader som fortfarande väntar på att replikeras rensas inte.

Transaktionskommandon lagras i distributionsdatabasen tills de sprids till alla prenumeranter eller tills den maximala kvarhållningsperioden för distribution har nåtts. Prenumeranter får transaktioner i samma ordning som de tillämpades på utgivaren.

Distributionsagent

Distributionsagenten körs på distributören för push-prenumerationer och hos prenumeranten för pull-prenumerationer. Agenten flyttar transaktioner från distributionsdatabasen till Prenumeranten. Om en prenumeration har markerats för validering kontrollerar distributionsagenten även om data i publishern och prenumeranten matchar.

Publikationstyper

Transaktionsreplikering erbjuder fyra publikationstyper:

Publikationstyp Beskrivning
Standardtransaktionspublikation Lämpligt för topologier där alla data på prenumeranten är skrivskyddade (transaktionsreplikering tvingar inte igenom detta hos prenumeranten).

Standardtransaktionspublikationer skapas som standard när du använder Transact-SQL eller Replikeringshanteringsobjekt (RMO). När du använder guiden Ny publikation skapas de genom att välja Transaktionspublikation på sidan Publikationstyp .

Mer information om hur du skapar publikationer finns i Publicera data och databasobjekt.
Transaktionspublicering med uppdateringsbara prenumerationer Egenskaperna för den här publikationstypen är:

- Varje plats har identiska data, med en Utgivare och en Prenumerant.
-Det är möjligt att uppdatera rader hos prenumeranten
– Den här topologin passar bäst för servermiljöer som kräver hög tillgänglighet och lässkalbarhet.

Mer information finns i Updatable Subscriptions (Uppdateringsbara prenumerationer).
Peer-to-peer-topologi Egenskaperna för den här publikationstypen är:
– Varje plats har identiska data och fungerar både som utgivare och prenumerant.
– Samma rad kan bara ändras på en plats i taget.
– Stödjer konfliktidentifiering
– Den här topologin passar bäst för servermiljöer som kräver hög tillgänglighet och lässkalbarhet.

Mer information finns i Peer-to-Peer Transaktionsreplikering.
Dubbelriktad transaktionsreplikering Egenskaperna för den här publikationstypen är:
Dubbelriktad replikering liknar Peer-to-Peer-replikering, men den ger inte konfliktlösning. Dubbelriktad replikering är dessutom begränsad till 2 servrar.

Mer information finns i Dubbelriktad transaktionsreplikering