Replica di tipo merge avanzata - Rilevamento e risoluzione dei conflittiAdvanced Merge Replication - Conflict Detection and Resolution

Se un server di pubblicazione e un Sottoscrittore sono connessi e viene eseguita la sincronizzazione, l'agente di merge rileva l'eventuale presenza di conflitti.When a Publisher and a Subscriber are connected and synchronization occurs, the Merge Agent detects if there are any conflicts. Se vengono rilevati dei conflitti, l'agente utilizza un sistema di risoluzione dei conflitti, specificato al momento dell'aggiunta di un articolo a una pubblicazione, per determinare quali dati vengono accettati e propagati agli altri siti.If conflicts are detected, the Merge Agent uses a conflict resolver (which is specified when an article is added to a publication) to determine which data is accepted and propagated to other sites.

Nota

Sebbene un Sottoscrittore esegua la sincronizzazione con il server di pubblicazione, i conflitti in genere si verificano tra gli aggiornamenti effettuati in diversi Sottoscrittori anziché tra gli aggiornamenti effettuati in un Sottoscrittore e nel server di pubblicazione.Although a Subscriber synchronizes with the Publisher, conflicts typically occur between updates that are made at different Subscribers, instead of updates being made at a Subscriber and at the Publisher.

La procedura di rilevamento e risoluzione dei conflitti dipende dalle opzioni seguenti, descritte in questo argomento:The behavior of conflict detection and resolution depends on the following options, which are described in this topic:

  • Se si specifica il rilevamento a livello di colonna, a livello di riga o a livello di record logico.Whether you specify column-level tracking, row-level tracking, or logical record-level tracking.

  • Se si specifica il meccanismo predefinito di risoluzione basato sulla priorità o un sistema di risoluzione dei conflitti dell'articolo.Whether you specify the default priority-based resolution mechanism or specify an article resolver. Il sistema di risoluzione dei conflitti dell'articolo può essere costituito da:An article resolver can be:

    • Un gestore della logica di business creato con codice gestito.A business logic handler written in managed code.

    • Un sistema di risoluzione personalizzatobasato sul modello COM.A COM-based custom resolver.

    • Un sistema di risoluzione basato sul modello COM implementato da MicrosoftMicrosoft.A COM-based resolver supplied by MicrosoftMicrosoft.

      Se si utilizza il meccanismo di risoluzione predefinito, la procedura è determinata inoltre dal tipo di sottoscrizione selezionato: client o server.If the default resolution mechanism is used, behavior is further determined by the type of subscription used: client or server.

Rilevamento dei conflittiConflict Detection

Una modifica dei dati viene considerata o meno un conflitto in base al tipo di rilevamento dei conflitti impostato per un articolo:Whether a data change qualifies as a conflict or not depends on the type of conflict tracking you set for an article:

  • Se si seleziona il rilevamento dei conflitti a livello di colonna, le modifiche vengono considerate in conflitto se vengono apportate alla stessa colonna e alla stessa riga in più di un nodo di replica.If you select column-level conflict tracking, it is considered a conflict if changes are made to the same column in the same row at more than one replication node.

  • Se si seleziona il rilevamento a livello di riga, le modifiche vengono considerate in conflitto se vengono apportate a qualsiasi colonna nella stessa riga in più di un nodo di replica (le colonne interessate nelle righe corrispondenti non devono necessariamente essere le stesse).If you select row-level tracking, it is considered a conflict if changes are made to any columns in the same row at more than one replication node (the columns affected in the corresponding rows need not be the same).

  • Se si seleziona il rilevamento a livello di record logico, le modifiche vengono considerate in conflitto se vengono apportate a qualsiasi riga nello stesso record logico in più di un nodo di replica (le colonne interessate nelle righe corrispondenti non devono necessariamente essere le stesse).If you select logical record-level tracking, it is considered a conflict if changes are made to any row in the same logical record at more than one replication node (the columns affected in the corresponding rows need not be the same).

    Per altre informazioni, vedere Rilevamento e risoluzione dei conflitti nei record logici.For more information, see Detecting and Resolving Conflicts in Logical Records.

    Per specificare il livello di rilevamento e risoluzione dei conflitti di un articolo, vedere specifica del livello di risoluzione e rilevamento dei conflitti per articoli di Merge.To specify the conflict tracking and resolution level for an article, see Specify the Conflict Tracking and Resolution Level for Merge Articles.

Risoluzione dei conflittiConflict Resolution

Dopo il rilevamento di un conflitto, l'agente di merge avvia il sistema di risoluzione dei conflitti selezionato e lo utilizza per determinare il valore in conflitto che prevale.After a conflict is detected, the Merge Agent launches the selected conflict resolver and uses the resolver to determine the conflict winner. La riga che prevale viene applicata al server di pubblicazione e al Sottoscrittore, mentre i dati della riga non confermata vengono inseriti in una tabella dei conflitti.The winning row is applied at the Publisher and Subscriber, and the data from the losing row is written to a conflict table. I conflitti vengono risolti immediatamente dopo l'esecuzione del sistema di risoluzione, a meno che non si scelga di risolvere i conflitti in modo interattivo.Conflicts are resolved immediately after the resolver executes, unless you select to resolve conflicts interactively.

Tipi di sistemi di risoluzioneResolver Types

Nella replica di tipo merge la risoluzione dei conflitti viene eseguita a livello di articolo.In merge replication, conflict resolution takes place at the article level. Per le pubblicazioni composte da numerosi articoli è possibile utilizzare diversi sistemi di risoluzione per articoli diversi oppure lo stesso sistema di risoluzione per un solo articolo, più articoli o per tutti gli articoli di una pubblicazione.For publications composed of several articles, you can have different conflict resolvers serving different articles, or the same conflict resolver serving one article, several articles, or all the articles comprising a publication.

Se si desidera utilizzare il sistema di risoluzione dei conflitti predefinito basato sulle priorità, non è necessario impostare la proprietà del sistema di risoluzione di un singolo articolo.If you plan to use the default priority-based conflict resolver, you do not have to set the resolver property of an article. Se si desidera utilizzare un sistema di risoluzione dei conflitti di articolo anziché quello predefinito, è necessario configurare la proprietà di risoluzione per l'articolo che lo utilizzerà selezionando un sistema di risoluzione disponibile nel server di pubblicazione.If you want to use an article resolver instead of the default resolver, you must set the resolver property for the article that will use it by selecting an available resolver on the Publisher. Nelle proprietà delle informazioni del sistema di risoluzione è possibile specificare qualsiasi informazione specifica da trasmettere al sistema di risoluzione.Any specific information that needs to be passed to the resolver can also be specified in the resolver information property.

La replica di tipo merge prevede quattro tipi di sistemi di risoluzione dei conflitti:Merge replication offers four types of conflict resolvers:

  • Il sistema di risoluzione dei conflitti predefinito basato sulla prioritàThe default priority-based conflict resolver

    Il meccanismo di risoluzione predefinito segue una procedura diversa a seconda che la sottoscrizione sia di tipo client o server.The default resolution mechanism behaves differently, depending on whether a subscription is a client subscription or a server subscription. È possibile assegnare valori di priorità ai singoli Sottoscrittori che utilizzano le sottoscrizioni server. In tal caso prevalgono le modifiche apportate al nodo con la priorità più alta.You assign priority values to individual Subscribers that use server subscriptions; changes made at the node with the highest priority win any conflicts. Nel caso delle sottoscrizioni client, la prima modifica scritta sul server di pubblicazione prevale nel conflitto.For client subscriptions, the first change written to the Publisher wins the conflict.

    Dopo la creazione di una sottoscrizione non è più possibile modificarne il tipo.After a subscription is created, it cannot be changed from one type to another.

  • Un gestore della logica di businessA business logic handler

    Il framework di gestione della logica di business consente di scrivere un assembly di codice gestito che viene chiamato durante il processo di sincronizzazione di tipo merge.The business logic handler framework allows you to write a managed code assembly that is called during the merge synchronization process. L'assembly include la logica di business in grado di rispondere ai conflitti e altre condizioni durante la sincronizzazione.The assembly includes business logic that can respond to conflicts and a number of other conditions during synchronization. Per altre informazioni, vedere Eseguire logiche di business durante la sincronizzazione di tipo merge.For more information, see Execute Business Logic During Merge Synchronization.

  • Un sistema di risoluzione personalizzato basato sul modello COMA COM-based custom resolver

    La replica di tipo merge utilizza un'API per la creazione di sistemi di risoluzione come oggetti COM in linguaggi quali MicrosoftMicrosoft Visual C++Visual C++ o MicrosoftMicrosoft Visual BasicVisual Basic.Merge replication provides an API for writing resolvers as COM objects in languages such as MicrosoftMicrosoft Visual C++Visual C++ or MicrosoftMicrosoft Visual BasicVisual Basic. Per altre informazioni, vedere COM-Based Custom Resolvers.For more information, see COM-Based Custom Resolvers.

  • Un sistema di risoluzione basato sul modello COM implementato da MicrosoftMicrosoftA COM-based resolver supplied by MicrosoftMicrosoft

    MicrosoftMicrosoft SQL ServerSQL Server include un certo numero di sistemi di risoluzione basati sul modello COM. SQL ServerSQL Server includes a number of COM-based resolvers. Per altre informazioni, vedere Sistemi di risoluzione dei conflitti basati su Microsoft COM.For more information, see Microsoft COM-Based Resolvers.

    Per informazioni sulla scelta del tipo di sistema di risoluzione appropriato, vedere Scegliere un sistema di risoluzione.For information about how to select the appropriate type of resolver, see Choose a Resolver.

Nota

Alcuni sistemi di risoluzione dei conflitti di articolo sono progettati per gestire solo i conflitti di alcune operazioni.Some article resolvers are written to handle conflicts only for certain operations. Ad esempio, un sistema di risoluzione può gestire gli aggiornamenti, ma non gli inserimenti o le eliminazioni.For example a resolver might handle updates, but not inserts or deletes. Il sistema di risoluzione dei conflitti predefinito basato sulla priorità gestisce qualsiasi conflitto non gestito dal sistema di risoluzione dei conflitti di articolo.The default priority-based conflict resolver handles any conflicts not handled by the article resolver.

Per specificare una sottoscrizione di tipo merge e la priorità per la risoluzione dei conflitti, vedereTo specify a merge subscription type and conflict resolution priority, see

Sistema di risoluzione interattivoInteractive Resolver

La replica prevede un'interfaccia utente del sistema di risoluzione interattivo che può essere utilizzata insieme al sistema di risoluzione dei conflitti predefinito basato sulla priorità o a un sistema di risoluzione dei conflitti di articolo.Replication supplies an Interactive Resolver user interface that can be used in conjunction with either the default priority-based conflict resolver or an article resolver. Quando si esegue la sincronizzazione su richiesta tramite Gestione sincronizzazione MicrosoftMicrosoft Windows, il sistema di risoluzione interattivo visualizza i dati del conflitto in fase di esecuzione e consente di selezionare il modo in cui risolvere i conflitti.When performing on-demand synchronization through MicrosoftMicrosoft Windows Synchronization Manager, the Interactive Resolver displays conflict data at run-time, and lets you choose how to resolve conflicts. Per ulteriori informazioni sull'attivazione della risoluzione interattiva e sull'avvio del sistema di risoluzione interattivo, vedere Interactive Conflict Resolution.For more information about how to enable interactive resolution and launch the Interactive Resolver, see Interactive Conflict Resolution.

Visualizzazione dei conflittiViewing Conflicts

Il modo più diretto per visualizzare i conflitti consiste nell'utilizzare Visualizzatore conflitti di replica, disponibile in SQL Server Management StudioSQL Server Management Studio (anche in SQL ServerSQL Server sono incluse stored procedure per l'esecuzione di query nelle tabelle dei conflitti).The most straightforward way to view conflicts is to use the Replication Conflict Viewer, available from SQL Server Management StudioSQL Server Management Studio ( SQL ServerSQL Server also provides stored procedures that allow the conflict tables to be queried.). Il Visualizzatore conflitti e il sistema di risoluzione interattivo sono strumenti simili, ma il sistema di risoluzione interattivo consente di risolvere i conflitti al momento della sincronizzazione, mentre il Visualizzatore conflitti è concepito per visualizzare i conflitti dopo la risoluzione.The Conflict Viewer and Interactive Resolver are similar tools, but the Interactive Resolver allows you to resolve conflicts as synchronization occurs, whereas the Conflict Viewer is designed for viewing conflicts after they have been resolved. Se i metadati del conflitto sono ancora disponibili nelle tabelle di sistema (vengono conservati per 14 giorni per impostazione predefinita), è possibile sovrascrivere i risultati della risoluzione del conflitto nel Visualizzatore conflitti. Tuttavia, se è richiesto un intervento diretto, è consigliabile utilizzare il sistema di risoluzione interattivo.If the conflict metadata is still available in the system tables (conflict metadata is retained for 14 days by default), you can override conflict resolution outcomes in the Conflict Viewer, but if direct intervention is regularly required, consider using the Interactive Resolver.

Nota

I conflitti a livello di record logici non vengono visualizzati nel Visualizzatore conflitti.Conflicts that involve logical records are not displayed in Conflict Viewer. Per visualizzare informazioni relative a questi conflitti, utilizzare le stored procedure di replica.To view information about these conflicts, use replication stored procedures. Per altre informazioni, vedere Visualizzare le informazioni sui conflitti per le pubblicazioni di tipo merge (programmazione Transact-SQL della replica).For more information, see View Conflict Information for Merge Publications (Replication Transact-SQL Programming).

Nel Visualizzatore conflitti sono visualizzate informazioni delle tre tabelle di sistema:The Conflict Viewer displays information from three system tables:

  • La replica crea una tabella dei conflitti per ogni tabella dell'articolo di merge, denominata MSmerge_conflict_<NomePubblicazione>_<NomeArticolo>.Replication creates a conflict table for each table in a merge article, with a name in the form MSmerge_conflict_<PublicationName>_<ArticleName>.

    La struttura delle tabelle dei conflitti corrisponde a quella delle tabelle su cui sono basate.Conflict tables have the same structure as the tables on which they are based. Una riga in una di queste tabelle rappresenta la versione non confermata di una riga in conflitto. La versione confermata della riga è inclusa nella tabella utente effettiva.A row in one of these tables consists of the losing version of a conflict row (the winning version of the row is in the actual user table).

  • Nella tabella MSmerge_conflicts_info sono contenute informazioni su ogni conflitto, incluso il tipo di conflitto.The MSmerge_conflicts_info table provides information about each conflict, including the conflict type.

  • La tabella sysmergearticles identifica le tabelle utente che presentano conflitti e fornisce informazioni su tali tabelle.The sysmergearticles table identifies which user tables have conflict tables and provides information about the conflict tables.

    Per impostazione predefinita, le informazioni sui conflitti vengono archiviate:By default, conflict information is stored:

  • Nel server di pubblicazione e nel Sottoscrittore se il livello di compatibilità della pubblicazione è pari a 90RTM o superiore.At the Publisher and Subscriber if the publication compatibility level is 90RTM or higher.

  • Nel server di pubblicazione se il livello di compatibilità della pubblicazione è inferiore a 80RTM.At the Publisher if the publication compatibility level is lower than 80RTM.

  • Nel server di pubblicazione se i Sottoscrittori eseguono SQL Server CompactSQL Server Compact.At the Publisher if Subscribers are running SQL Server CompactSQL Server Compact. I dati in conflitto non possono essere archiviati nei sottoscrittori di SQL Server CompactSQL Server Compact .Conflict data cannot be stored on SQL Server CompactSQL Server Compact Subscribers.

    Per visualizzare i conflittiTo view conflicts

  • SQL Server Management StudioSQL Server Management Studio: Visualizzare e risolvere i conflitti di dati per le pubblicazioni di tipo merge (SQL Server Management Studio): View and Resolve Data Conflicts for Merge Publications (SQL Server Management Studio)

  • Programmazione Transact-SQLTransact-SQL della replica: Visualizzare le informazioni sui conflitti per le pubblicazioni di tipo merge (programmazione Transact-SQL della replica)Replication Transact-SQLTransact-SQL Programming: View Conflict Information for Merge Publications (Replication Transact-SQL Programming)

Vedere ancheSee Also

Sincronizzare i datiSynchronize Data