Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
In dit artikel wordt transactionele replicatie voor SQL Server geïntroduceerd. Transactionele replicatie begint meestal met een momentopname van de databaseobjecten en -gegevens van de publicatie. Zodra de eerste momentopname wordt gemaakt, worden de volgende gegevenswijzigingen en schemawijzigingen die in publisher zijn aangebracht, meestal aan de abonnee geleverd zodra ze plaatsvinden (in bijna realtime). De wijzigingen in de gegevens worden in dezelfde volgorde en binnen dezelfde transactiegrenzen toegepast op de abonnee als bij de Uitgever; Daarom wordt binnen een publicatie transactionele consistentie gegarandeerd.
Overzicht
Transactionele replicatie wordt doorgaans gebruikt in server-naar-serveromgevingen en is geschikt in elk van de volgende gevallen:
U wilt dat incrementele wijzigingen worden doorgegeven aan abonnees wanneer ze zich voordoen.
De toepassing vereist een lage latentie tussen het tijdstip waarop wijzigingen worden aangebracht bij Publisher en de wijzigingen komen aan bij de abonnee.
De toepassing vereist toegang tot tussenliggende gegevensstatussen. Als een rij bijvoorbeeld vijf keer wordt gewijzigd, kan met transactionele replicatie een toepassing reageren op elke wijziging (zoals het activeren van een trigger), niet alleen de nettogegevenswijziging in de rij.
Publisher heeft een zeer groot aantal invoeg-, update- en verwijderactiviteiten.
De uitgever of abonnee is een niet-SQL Server-database, zoals Oracle.
Abonnees van transactionele publicaties moeten standaard worden behandeld als alleen-lezen, omdat wijzigingen niet worden doorgegeven aan de Uitgever. Transactionele replicatie biedt echter opties waarmee updates bij de abonnee zijn toegestaan.
Opmerking
Azure SQL Managed Instance kan een uitgever, distributeur en abonnee zijn voor momentopname en transactionele replicatie. Databases in Azure SQL Database kunnen alleen pushabonnees zijn voor momentopname en transactionele replicatie. Zie Transactionele replicatie met Azure SQL Database en Azure SQL Managed Instancevoor meer informatie.
TLS 1.3-versleuteling configureren
SQL Server 2025 (17.x) Preview introduceert TDS 8.0-ondersteuning voor transactionele replicatie, waaronder:
- Replicatieagents configureren voor gebruik van TLS 1.3-versleuteling tussen exemplaren van SQL Server 2025 (17.x) Preview en ook tussen SQL Server 2025 (17.x) Preview en Azure SQL Managed Instance.
- Standaardversleuteling voor gekoppelde servercommunicatie tussen SQL Server 2025 (17.x) Preview-versie exemplaren in een replicatietopologie. Gekoppelde servers in SQL Server 2025 (17.x) Preview gebruiken het OLE DB v19-stuurprogramma, dat standaard
Encrypt=Mandatorywordt versleuteld.
Opmerking
Voor replicatietopologieën met een externe distributeur:
Hoe transactionele replicatie werkt
Transactionele replicatie wordt geïmplementeerd door de SQL Server Snapshot Agent, Log Reader Agent en Distribution Agent. De momentopnameagent bereidt momentopnamebestanden voor met schema en gegevens van gepubliceerde tabellen en databaseobjecten, slaat de bestanden op in de map met momentopnamen en registreert synchronisatietaken in de distributiedatabase op de Distributeur.
De logboeklezeragent bewaakt het transactielogboek van elke database die is geconfigureerd voor transactionele replicatie en kopieert de transacties die zijn gemarkeerd voor replicatie vanuit het transactielogboek naar de distributiedatabase, die fungeert als een betrouwbare opslag- en doorstuurwachtrij. De distributieagent kopieert de oorspronkelijke momentopnamebestanden uit de map met momentopnamen en de transacties in de distributiedatabasetabellen naar abonnees.
Incrementele wijzigingen die zijn aangebracht in de Publisher-stroom naar abonnees volgens het schema van de distributieagent, die continu kunnen worden uitgevoerd voor minimale latentie of met geplande intervallen. Omdat wijzigingen in de gegevens moeten worden aangebracht in Publisher (wanneer transactionele replicatie wordt gebruikt zonder directe bijwerk- of bijwerkopties in de wachtrij), worden updateconflicten vermeden. Uiteindelijk bereiken alle abonnees dezelfde waarden als de uitgever. Als directe bijwerk- of bijwerkopties in de wachtrij worden gebruikt met transactionele replicatie, kunnen er updates worden uitgevoerd bij de abonnee en kunnen er conflicten optreden bij het bijwerken in de wachtrij.
In de volgende afbeelding ziet u de belangrijkste onderdelen van transactionele replicatie.
Eerste gegevensset
Voordat een nieuwe transactionele replicatieabonnee incrementele wijzigingen van een Uitgever kan ontvangen, moet de abonnee tabellen bevatten met hetzelfde schema en dezelfde gegevens als de tabellen in Publisher. De eerste gegevensset is doorgaans een momentopname die wordt gemaakt door de momentopnameagent en wordt gedistribueerd en toegepast door de distributieagent. De initiële gegevensset kan ook worden opgegeven via een back-up of andere middelen, zoals SQL Server Integration Services.
Wanneer momentopnamen worden gedistribueerd en toegepast op abonnees, worden alleen de abonnees die wachten op initiële momentopnamen beïnvloed. Andere abonnees van die publicatie (degenen die al zijn geïnitialiseerd) worden niet beïnvloed.
Gelijktijdige verwerking van momentopnamen
Met momentopnamereplicatie worden gedeelde vergrendelingen op alle tabellen geplaatst die zijn gepubliceerd als onderdeel van replicatie voor de duur van het genereren van momentopnamen. Hiermee voorkomt u dat er updates worden uitgevoerd in de publicatietabellen. Gelijktijdige verwerking van momentopnamen, de standaard met transactionele replicatie, houdt de sharevergrendelingen niet vast tijdens het genereren van de hele momentopname, waardoor gebruikers ononderbroken kunnen blijven werken terwijl replicatie eerste momentopnamebestanden maakt.
Snapshotagent
De procedures waarmee de momentopnameagent de eerste momentopname in transactionele replicatie implementeert, zijn dezelfde procedures die worden gebruikt in momentopnamereplicatie (behalve zoals eerder beschreven met betrekking tot gelijktijdige verwerking van momentopnamen).
Nadat de momentopnamebestanden zijn gegenereerd, kunt u deze weergeven in de map met momentopnamen met behulp van Microsoft Windows Verkenner.
Gegevens en de logboeklezeragent wijzigen
De logboeklezeragent wordt uitgevoerd bij de distributeur; het wordt doorgaans continu uitgevoerd, maar kan ook worden uitgevoerd volgens een schema dat u tot stand brengt. Tijdens het uitvoeren leest de Log Reader-agent eerst het transactielogboek van de publicatie (hetzelfde databaselogboek dat wordt gebruikt voor het bijhouden en herstellen van transacties tijdens normale bewerkingen van SQL Server Database Engine) en identificeert de INSERT-, UPDATE- en DELETE-instructies of andere wijzigingen die zijn aangebracht in de gegevens in transacties die zijn gemarkeerd voor replicatie. Vervolgens kopieert de agent deze transacties in batches naar de distributiedatabase bij de distributeur. De logboeklezeragent maakt gebruik van de interne opgeslagen procedure sp_replcmds om de volgende set opdrachten op te halen die zijn gemarkeerd voor replicatie uit het logboek. De distributiedatabase wordt vervolgens de opslag- en doorstuurwachtrij van waaruit wijzigingen naar abonnees worden verzonden. Alleen vastgelegde transacties worden verzonden naar de distributiedatabase.
Nadat de volledige batch transacties naar de distributiedatabase is geschreven, wordt deze doorgevoerd. Na het doorvoeren van elke batch opdrachten aan de Distributeur roept de Log Reader-agent sp_repldone aan om te markeren waar de replicatie voor het laatst is voltooid. Ten slotte markeert de agent de rijen in het transactielogboek die klaar zijn om te worden opgeschoond. Rijen die nog steeds wachten om te worden gerepliceerd, worden niet opgeschoond.
Transactieopdrachten worden opgeslagen in de distributiedatabase totdat ze worden doorgegeven aan alle abonnees of totdat de maximale bewaarperiode voor distributie is bereikt. Abonnees ontvangen transacties in dezelfde volgorde waarin ze zijn toegepast bij Publisher.
Distributieagent
De distributieagent wordt uitgevoerd bij de distributor voor push-abonnementen en bij de abonnee voor pull-abonnementen. De agent verplaatst transacties van de distributiedatabase naar de abonnee. Als een abonnement is gemarkeerd voor validatie, controleert de distributieagent ook of gegevens bij de uitgever en abonnee overeenkomen.
Publicatietypen
Transactionele replicatie biedt vier publicatietypen:
| Publicatietype | Beschrijving |
|---|---|
| Standaard transactionele publicatie | Geschikt voor topologieën waarin alle gegevens bij de abonnee alleen-lezen zijn (transactionele replicatie dwingt dit niet af bij de abonnee). Standaard transactionele publicaties worden standaard gemaakt bij gebruik van Transact-SQL of RMO (Replication Management Objects). Wanneer u de wizard Nieuwe publicatie gebruikt, worden deze gemaakt door transactionele publicatie te selecteren op de pagina Publicatietype . Zie Gegevens en databaseobjecten publiceren voor meer informatie over het maken van publicaties. |
| Transactionele publicatie met updatable abonnementen | De kenmerken van dit publicatietype zijn: -Elke locatie heeft identieke gegevens, met één uitgever en één abonnee. -Het is mogelijk om rijen bij te werken bij de abonnee -Deze topologie is het meest geschikt voor serveromgevingen die hoge beschikbaarheid en leesschaalbaarheid vereisen. Zie Abonnementen bijwerken voor meer informatie. |
| Peer-to-peer-topologie | De kenmerken van dit publicatietype zijn: - Elke locatie heeft identieke gegevens en fungeert als uitgever en abonnee. - Dezelfde rij kan slechts op één locatie tegelijk worden gewijzigd. - Ondersteunt conflictdetectie - Deze topologie is het meest geschikt voor serveromgevingen die hoge beschikbaarheid en leesschaalbaarheid vereisen. Zie Peer-to-Peer Transactionele replicatie voor meer informatie. |
| Bidirectionele transactionele replicatie | De kenmerken van dit publicatietype zijn: Bidirectionele replicatie is vergelijkbaar met peer-to-peer-replicatie, maar biedt geen conflictoplossing. Daarnaast is bidirectionele replicatie beperkt tot 2 servers. Zie Bidirectionele transactionele replicatie voor meer informatie |