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
Wanneer een uitgever en abonnee zijn verbonden en synchronisatie plaatsvindt, detecteert de samenvoegagent of er conflicten zijn. Als er conflicten worden gedetecteerd, gebruikt de samenvoegagent een conflictoplossing (die wordt opgegeven wanneer een artikel wordt toegevoegd aan een publicatie) om te bepalen welke gegevens worden geaccepteerd en doorgegeven aan andere sites.
Fusie-replicatie biedt verschillende methoden om conflicten te detecteren en op te lossen. Voor de meeste toepassingen is de standaardmethode geschikt:
- Als er een conflict optreedt tussen een uitgever en een abonnee, wordt de wijziging in Publisher bewaard en wordt de wijziging van de abonnee verwijderd.
- Als er een conflict optreedt tussen twee abonnees die clientabonnementen gebruiken (het standaardtype voor pull-abonnementen), wordt de wijziging van de eerste abonnee om te synchroniseren met de uitgever behouden en wordt de wijziging van de tweede abonnee verwijderd. Zie Een abonnementstype en conflictoplossingsprioriteit (SQL Server Management Studio) opgeven voor meer informatie over het opgeven van client- en serverabonnementen.
- Als er een conflict optreedt tussen twee abonnees die serverabonnementen gebruiken (het standaardtype voor pushabonnementen), wordt de wijziging van de abonnee met de hoogste prioriteit behouden en wordt de wijziging van de tweede abonnee verwijderd. Als de prioriteitswaarden gelijk zijn, wordt de wijziging van de eerste abonnee om te synchroniseren met de uitgever behouden.
Opmerking
Hoewel een abonnee wordt gesynchroniseerd met de uitgever, treden er meestal conflicten op tussen updates die worden gemaakt bij verschillende abonnees, in plaats van updates te maken bij een abonnee en bij de uitgever.
Het gedrag van conflictdetectie en -oplossing is afhankelijk van de volgende opties, die in dit onderwerp worden beschreven:
Of u nu het bijhouden op kolomniveau, het bijhouden op rijniveau of het bijhouden van logische records opgeeft.
Of u nu het standaardoplossingsmechanisme op basis van prioriteit opgeeft of een artikelresolver specificeert. Een artikelresolver kan zijn:
- Een zakelijke logica-handler die is geschreven in beheerde code.
- Een op COM gebaseerde aangepaste resolver.
- Een op COM gebaseerde resolver die door Microsoft wordt geleverd.
Als het standaardoplossingsmechanisme wordt gebruikt, wordt het gedrag verder bepaald door het type abonnement dat wordt gebruikt: client of server.
Conflictdetectie
Of een gegevenswijziging in aanmerking komt als een conflict of niet, is afhankelijk van het type conflicttracering dat u voor een artikel hebt ingesteld:
- Als u conflicttracering op kolomniveau selecteert, wordt dit beschouwd als een conflict als er wijzigingen worden aangebracht in dezelfde kolom in dezelfde rij op meer dan één replicatieknooppunt.
- Als u bijhouden op rijniveau selecteert, wordt dit beschouwd als een conflict als er wijzigingen worden aangebracht in kolommen in dezelfde rij op meer dan één replicatieknooppunt (de kolommen die in de overeenkomende rijen worden beïnvloed, hoeven niet hetzelfde te zijn).
- Als u het bijhouden van logische records selecteert, wordt dit beschouwd als een conflict als er wijzigingen worden aangebracht in een rij in dezelfde logische record op meer dan één replicatieknooppunt (de kolommen die in de overeenkomende rijen worden beïnvloed, hoeven niet hetzelfde te zijn).
Zie Conflicten in logische records detecteren en oplossen voor meer informatie.
Zie Eigenschappen voor samenvoegingsreplicatie opgeven om het tracerings- en oplossingsniveau voor conflicten van een artikel te specificeren.
Conflictresolutie
Nadat er een conflict is gedetecteerd, start de samenvoegagent de geselecteerde conflictoplossing en gebruikt de resolver om de conflictwinnaar te bepalen. De winnende rij wordt toegepast bij publisher en abonnee en de gegevens uit de rij die verloren gaan, worden naar een conflicttabel geschreven. Conflicten worden onmiddellijk opgelost nadat de resolver wordt uitgevoerd, tenzij u ervoor kiest om conflicten interactief op te lossen.
Samentrekkingsreplicatieconflicten oplossen
Van toepassing op:SQL Server
Wanneer een uitgever en abonnee zijn verbonden en synchronisatie plaatsvindt, detecteert de samenvoegagent of er conflicten zijn. Als er conflicten worden gedetecteerd, gebruikt de samenvoegagent een conflictoplossing om te bepalen welke gegevens worden geaccepteerd en doorgegeven aan andere sites.
Opmerking
Hoewel een abonnee wordt gesynchroniseerd met de uitgever, treden er meestal conflicten op tussen updates die zijn aangebracht bij verschillende abonnees in plaats van updates die zijn aangebracht bij een abonnee en bij de Uitgever.
Fusie-replicatie biedt verschillende methoden om conflicten te detecteren en op te lossen. Voor de meeste toepassingen is de standaardmethode geschikt:
Als er een conflict optreedt tussen een uitgever en een abonnee, wordt de wijziging in Publisher bewaard en wordt de wijziging van de abonnee verwijderd.
Als er een conflict optreedt tussen twee abonnees die clientabonnementen gebruiken (het standaardtype voor pull-abonnementen), wordt de wijziging van de eerste abonnee om te synchroniseren met de uitgever behouden en wordt de wijziging van de tweede abonnee verwijderd. Zie Een abonnementstype en conflictoplossingsprioriteit (SQL Server Management Studio) opgeven voor meer informatie over het opgeven van client- en serverabonnementen.
Als er een conflict optreedt tussen twee abonnees die serverabonnementen gebruiken (het standaardtype voor pushabonnementen), wordt de wijziging van de abonnee met de hoogste prioriteit behouden en wordt de wijziging van de tweede abonnee verwijderd. Als de prioriteitswaarden gelijk zijn, wordt de wijziging van de eerste abonnee om te synchroniseren met de uitgever behouden.
Zie Advanced Merge Replication Conflict Detection and Resolution (Advanced Merge Replication Conflict Detection and Resolution) voor meer informatie over conflictdetectie en -oplossing voor samenvoegingsreplicatie.
Resolvertypen
Bij samenvoegreplicatie vindt conflictoplossing plaats op artikelniveau. Voor publicaties die bestaan uit verschillende artikelen, kunt u verschillende conflictoplossers hebben die verschillende artikelen leveren, of dezelfde conflictoplossing die één artikel, meerdere artikelen of alle artikelen bevat die een publicatie bevatten.
Als u van plan bent om de op prioriteit gebaseerde conflictoplossing te gebruiken, hoeft u de eigenschap resolver van een artikel niet in te stellen. Als u een artikelenresolver wilt gebruiken in plaats van de standaardresolver, moet u de eigenschap resolver instellen voor het artikel dat het gebruikt door een beschikbare resolver te selecteren in de Publisher. Eventuele specifieke informatie die moet worden doorgegeven aan de resolver, kan ook worden opgegeven in de informatie-eigenschap van de resolver.
Samenvoegreplicatie biedt vier typen conflictoplossingsoplossingen:
De standaard conflictoplossing op basis van prioriteit
Het standaardoplossingsmechanisme gedraagt zich anders, afhankelijk van of een abonnement een clientabonnement of een serverabonnement is. U wijst prioriteitswaarden toe aan afzonderlijke abonnees die serverabonnementen gebruiken; wijzigingen die zijn aangebracht op het knooppunt met de hoogste prioriteit, winnen conflicten. Voor clientabonnementen wint de eerste wijziging die naar Publisher is geschreven het conflict.
Nadat een abonnement is gemaakt, kan het niet van het ene type naar het andere worden gewijzigd.
Een handler voor bedrijfslogica
Met het handlerframework voor bedrijfslogica kunt u een beheerde codeassembly schrijven die wordt aangeroepen tijdens het samenvoegsynchronisatieproces. De assembly bevat bedrijfslogica die kan reageren op conflicten en een aantal andere voorwaarden tijdens de synchronisatie. Zie Zakelijke logica uitvoeren tijdens de samenvoegsynchronisatie voor meer informatie.
Een op COM gebaseerde aangepaste resolver
Samenvoegreplicatie biedt een API voor het schrijven van resolvers als COM-objecten in talen zoals Microsoft Visual C++ of Microsoft Visual Basic. Zie COM-Based Aangepaste resolvers voor meer informatie.
Een op COM gebaseerde resolver die door Microsoft wordt geleverd
Microsoft SQL Server bevat een aantal OP COM gebaseerde resolvers. Zie Microsoft COM-Based Resolvers voor meer informatie.
Zie Een resolver kiezen voor informatie over het selecteren van het juiste type resolver.
Opmerking
Sommige artikel-resolvers worden geschreven om conflicten alleen voor bepaalde bewerkingen af te handelen. Een resolver kan bijvoorbeeld updates verwerken, maar geen invoegingen of verwijderingen. De standaard conflictoplossing op basis van prioriteit verwerkt eventuele conflicten die niet worden verwerkt door de artikeloplossing.
Voor specificatie van het type samenvoegingsabonnement en conflictoplossingsprioriteit, raadpleeg
SQL Server Management Studio: geef een abonnementstype en prioriteit voor conflictoplossing (SQL Server Management Studio) op
Replicatie Transact-SQL programmeren en programmeren van Replicatiebeheerobjecten (RMO): Een pull-abonnement maken en Een push-abonnement maken
Interactieve resolver
Replicatie biedt een interactieve resolver-gebruikersinterface die kan worden gebruikt in combinatie met de standaard conflictoplossing op basis van prioriteit of een artikel-resolver. Wanneer u synchronisatie op aanvraag uitvoert via Microsoft Windows-synchronisatiebeheer, worden conflictgegevens weergegeven tijdens runtime en kunt u kiezen hoe u conflicten kunt oplossen. Zie Interactive Conflict Resolution voor meer informatie over het inschakelen van interactieve resolutie en het starten van de Interactieve Resolver.
Conflicten weergeven
De eenvoudigste manier om conflicten te bekijken, is door de replicatieconflictviewer te gebruiken, beschikbaar vanuit SQL Server Management Studio (SQL Server biedt ook opgeslagen procedures waarmee de conflicttabellen kunnen worden opgevraagd).). De Conflict Viewer en Interactive Resolver zijn vergelijkbare hulpprogramma's, maar met de Interactive Resolver kunt u conflicten oplossen wanneer synchronisatie plaatsvindt, terwijl de conflictviewer is ontworpen voor het weergeven van conflicten nadat ze zijn opgelost. Als de conflictmetagegevens nog steeds beschikbaar zijn in de systeemtabellen (conflictmetagegevens worden standaard 14 dagen bewaard), kunt u de resultaten van conflictoplossing in de Conflictviewer overschrijven, maar als er regelmatig directe interventie nodig is, kunt u overwegen de interactieve resolver te gebruiken.
Opmerking
Conflicten waarbij logische records zijn betrokken, worden niet weergegeven in conflictviewer. Als u informatie over deze conflicten wilt weergeven, gebruikt u opgeslagen replicatieprocedures. Voor meer informatie, zie Conflictinformatie weergeven voor samenvoegpublicaties (Replicatie Transact-SQL Programmeren).
In conflictviewer worden gegevens uit drie systeemtabellen weergegeven:
Replicatie maakt een conflicttabel voor elke tabel in een samenvoegartikel, met een naam in de vorm MSmerge_conflict_<PublicationName>_<ArticleName>.
Conflicttabellen hebben dezelfde structuur als de tabellen waarop ze zijn gebaseerd. Een rij in een van deze tabellen bestaat uit de verliezende versie van een conflictrij (de winnende versie van de rij bevindt zich in de werkelijke gebruikerstabel).
De MSmerge_conflicts_info tabel bevat informatie over elk conflict, inclusief het conflicttype.
De tabel sysmergearticles geeft aan welke gebruikerstabellen conflicttabellen bevatten en bevat informatie over de conflicttabellen.
Conflictinformatie wordt standaard opgeslagen:
Bij de Publisher en Subscriber indien het compatibiliteitsniveau van de publicatie 90RTM of hoger is.
Bij Publisher als het compatibiliteitsniveau van de publicatie lager is dan 80RTM.
Bij de uitgever als de abonnees SQL Server Compact gebruiken. Conflictgegevens kunnen niet worden opgeslagen op compacte SQL Server-abonnees.
Conflicten weergeven
SQL Server Management Studio: Gegevensconflicten voor samenvoegingspublicaties weergeven en oplossen (SQL Server Management Studio)
Replicatie Transact-SQL programmeren: Conflictinformatie weergeven voor samenvoegpublicaties (Replicatie Transact-SQL Programmeren)