Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
I conflitti nella replica di tipo merge vengono risolti in base al sistema di risoluzione specificato per ogni articolo. Per impostazione predefinita, i conflitti vengono risolti senza che sia necessario l'intervento dell'utente. È tuttavia possibile visualizzare i conflitti e modificare il risultato della risoluzione nel Visualizzatore conflitti di replica di Microsoft.
I dati dei conflitti sono disponibili nel Visualizzatore conflitti di replica per l'intervallo di tempo specificato per il periodo di memorizzazione dei conflitti, che per impostazione predefinita è di 14 giorni. Per impostare il periodo di conservazione dei conflitti, eseguire una delle operazioni seguenti:
Specifica un valore del periodo di conservazione per il parametro
@conflict_retentiondi sp_addmergepublication (Transact-SQL).Specifica il valore conflict_retention per il parametro
@propertye un valore del periodo di conservazione per il parametro@valuedi sp_changemergepublication (Transact-SQL).
Per impostazione predefinita, le informazioni sui conflitti vengono archiviate:
- Nel server di pubblicazione e nel server Sottoscrittore se il livello di compatibilità della pubblicazione è pari a 90RTM o superiore.
- Nel server di pubblicazione, se il livello di compatibilità della pubblicazione è inferiore a 80RTM.
- Nel server di pubblicazione se i Sottoscrittori eseguono SQL Server Compact. I dati in conflitto non possono essere archiviati nei sottoscrittori di SQL Server Compact.
L'archivio delle informazioni sui conflitti viene controllato dalla proprietà conflict_logging della pubblicazione. Per ulteriori informazioni, vedi sp_addmergepublication (Transact-SQL) e sp_changemergepublication (Transact-SQL).
I conflitti possono inoltre essere risolti in modo interattivo durante la sincronizzazione tramite il sistema di risoluzione interattivo di Microsoft. Il sistema di risoluzione interattivo è disponibile tramite Gestione sincronizzazione di Microsoft Windows. Per ulteriori informazioni, vedi Sincronizzare una sottoscrizione mediante Gestione sincronizzazione Microsoft Windows.
Risolvere i conflitti
Connettiti al server di pubblicazione (o, secondo i casi, al Sottoscrittore) in Microsoft SQL Server Management Studio e quindi espandi il nodo server.
Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .
Fare clic con il pulsante destro del mouse sulla pubblicazione per la quale si desidera visualizzare i conflitti e quindi scegliere Visualizza conflitti.
Nota
Se è stato specificato il valore 'subscriber' per la proprietà conflict_logging , la voce di menu Visualizza conflitti non sarà disponibile. Per visualizzare i conflitti, avviare ConflictViewer.exe dal prompt dei comandi. Per impostazione predefinita, ConflictViewer.exe si trova nella directory Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE. Per un elenco di parametri di avvio validi, eseguire ConflictViewer.exe -?.
Nella finestra di dialogo Seleziona tabella con conflitti selezionare un database, una pubblicazione e una tabella per cui visualizzare i conflitti.
Nel Visualizzatore conflitti di replica è possibile:
Filtrare le righe con i pulsanti a destra della griglia superiore.
Selezionare una riga nella griglia superiore per visualizzare le informazioni su tale riga nella griglia inferiore.
Selezionare una o più righe nella griglia superiore e quindi fare clic su Rimuovi, che equivale a fare clic sul pulsante Invia vincitore, senza apportare alcuna modifica ai dati.
Fare clic sul pulsante delle proprietà (...) per visualizzare altre informazioni su una colonna coinvolta in un conflitto.
Modifica i dati nella colonna Vincitore del conflitto o Perdente del conflitto prima di inviarli (i dati sono di sola lettura se la colonna è grigia).
Fare clic su Invia vincitore per accettare la riga designata come vincitore del conflitto.
Fare clic su Invia valore soccombente per sovrascrivere la risoluzione e propagare a tutti i nodi della topologia il valore designato come soccombente del conflitto.
Selezionare Registra informazioni dettagliate sul conflitto per registrare i dati del conflitto in un file. Per specificare un percorso per il file, scegliere Opzioni dal menu Visualizza. Immettere un valore o fare clic sul pulsante Sfoglia (...) e quindi passare al file appropriato. Fare clic su OK per chiudere la finestra di dialogo Opzioni .
Chiudere il Visualizzatore conflitti di replica.
Visualizzare le informazioni sui conflitti
Quando viene risolto un conflitto nella replicazione di tipo merge, i dati della riga soccombente vengono scritti in una tabella dei conflitti. I dati relativi al conflitto possono essere visualizzati tramite codice usando le stored procedure di replica. Per altre informazioni, vedere Rilevamento e risoluzione avanzati dei conflitti nella replica di tipo merge.
Nel server di pubblicazione, nel database di pubblicazione, eseguire sp_helpmergepublication. Notare i valori delle colonne seguenti nel set di risultati:
centralized_conflicts : 1 indica che le righe con conflitti vengono archiviate nel server di pubblicazione, mentre 0 indica che le righe con conflitti non vengono archiviate nel server di pubblicazione.
decentralized_conflicts : 1 indica che le righe con conflitti vengono archiviate nel Sottoscrittore, mentre 0 indica che le righe con conflitti non vengono archiviate nel Sottoscrittore.
Nota
Per definire il comportamento della registrazione dei conflitti relativi a una pubblicazione di tipo merge, viene usato il parametro
@conflict_loggingdi sp_addmergepublication. L'uso del parametro@centralized_conflictsè deprecato.
Nella tabella seguente sono descritti i valori di queste colonne sulla base del valore specificato per
@conflict_logging.Valore di @conflict_logging conflitti_centralizzati conflitti_decentralizzati publisher 1 0 subscriber 0 1 both 1 1 Nel database di pubblicazione del server di pubblicazione oppure nel database di sottoscrizione del Sottoscrittore, eseguire sp_helpmergearticleconflicts. Specificare il valore
@publicationper restituire le informazioni sui conflitti solo per articoli che appartengono a una pubblicazione specifica. In tal modo per gli articoli con conflitti verranno restituite le informazioni della tabella dei conflitti. Notare il valore di conflict_table per qualsiasi articolo di interesse. Se il valore di conflict_table per un articolo è NULL, eliminare i conflitti che si sono verificati in questo articolo.(Facoltativo) Rivedere le righe con conflitti presenti negli articoli di interesse. A seconda dei valori di centralized_conflicts e decentralized_conflicts ottenuti al passaggio 1, eseguire una delle operazioni seguenti:
Nel server di pubblicazione, nel database di pubblicazione, eseguire sp_helpmergeconflictrows. Specificare una tabella dei conflitti per l'articolo (ottenuta al passaggio 1) per
@conflict_table. (Facoltativo) Specificare il valore@publicationper limitare le informazioni restituite sui conflitti a una pubblicazione specifica. Restituisce i dati della riga e altre informazioni relative alla riga perdente.Nel database di sottoscrizione del Sottoscrittore eseguire sp_helpmergeconflictrows. Specificare una tabella dei conflitti per l'articolo (ottenuta al passaggio 1) per
@conflict_table. Questo restituisce i dati della riga e altre informazioni sulla riga perdente.
Conflitto con eliminazione non riuscita
Nel server di pubblicazione, nel database di pubblicazione, eseguire sp_helpmergepublication. Notare i valori delle colonne seguenti nel set di risultati:
centralized_conflicts : 1 indica che le righe con conflitti vengono archiviate nel server di pubblicazione, mentre 0 indica che le righe con conflitti non vengono archiviate nel server di pubblicazione.
decentralized_conflicts : 1 indica che le righe con conflitti vengono archiviate nel Sottoscrittore, mentre 0 indica che le righe con conflitti non vengono archiviate nel Sottoscrittore.
Nota
Per definire il comportamento della registrazione dei conflitti relativi a una pubblicazione di tipo merge, viene usato il parametro
@conflict_loggingdi sp_addmergepublication. L'uso del parametro@centralized_conflictsè deprecato.
Nel database di pubblicazione dell'Autore della pubblicazione oppure nel database di sottoscrizione del Sottoscrittore, eseguire sp_helpmergearticleconflicts. Specificare un valore per
@publicationin modo da restituire le informazioni della tabella dei conflitti solo per articoli che appartengono a una pubblicazione specifica. In tal modo per gli articoli con conflitti verranno restituite le informazioni della tabella dei conflitti. Notare il valore di source_object per qualsiasi articolo di interesse. Se il valore di conflict_table per un articolo è NULL, eliminare i conflitti che si sono verificati in questo articolo.(Facoltativo) Rivedere le informazioni sui conflitti per i conflitti di eliminazione. A seconda dei valori di centralized_conflicts e decentralized_conflicts ottenuti al passaggio 1, eseguire una delle operazioni seguenti:
Nel server di pubblicazione, nel database di pubblicazione, eseguire sp_helpmergedeleteconflictrows. Specificare il nome della tabella di origine (ottenuta al passaggio 1) nella quale si è verificato il conflitto per
@source_object. (Facoltativo) Specificare il valore@publicationper limitare le informazioni restituite sui conflitti a una pubblicazione specifica. Restituisce le informazioni sui conflitti di eliminazione archiviate nel Publisher.Nel database di sottoscrizione del Sottoscrittore eseguire sp_helpmergedeleteconflictrows. Specificare il nome della tabella di origine (ottenuta al passaggio 1) nella quale si è verificato il conflitto per
@source_object. (Facoltativo) Specificare il valore@publicationper limitare le informazioni restituite sui conflitti a una pubblicazione specifica. Restituisce le informazioni sui conflitti di eliminazione memorizzate nel Sottoscrittore.