Condividi tramite


Rilevamento e risoluzione di conflitti di replica

Quando viene eseguita una sincronizzazione dopo quella iniziale, le modifiche apportate ai dati su un Sottoscrittore potrebbero essere in conflitto con quelle apportate su un altro Sottoscrittore o sul server di pubblicazione. Quando si crea la pubblicazione, è quindi necessario assegnare un sistema di risoluzione per gestire questi conflitti.

Eliminazione dei conflitti

Quando si esegue la sincronizzazione, l'agente di merge in esecuzione sul server di pubblicazione rileva gli eventuali conflitti tra dati e quindi determina quali dati accettare e propagare agli altri siti in base al sistema di risoluzione associato alla pubblicazione.

Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) supporta il rilevamento a livello di riga e a livello di colonna quando si esegue la sincronizzazione con i server di pubblicazione di SQL Server 2005. Per la sincronizzazione con i server di pubblicazione di SQL Server 2000, SQL Server Compact Edition supporta invece solo il rilevamento a livello di riga.

Rilevamento a livello di riga in SQL Server Compact Edition

Quando si esegue la sincronizzazione con un server di pubblicazione di SQL Server 2000, il Motore di database di SQL Server Compact Edition richiama il rilevamento quando una riga viene inserita, aggiornata o eliminata. In caso di conflitti a livello di riga, le modifiche apportate alle righe corrispondenti vengono considerate come un conflitto, indipendentemente dal fatto che le modifiche siano state apportate alla stessa colonna. Una modifica, ad esempio, viene apportata nel server di pubblicazione alla colonna degli indirizzi, mentre un'altra modifica viene apportata nel Sottoscrittore alla colonna dei numeri di telefono della riga corrispondente. Con il rilevamento a livello di riga, viene rilevato un conflitto, perché sono state apportate modifiche alla stessa riga.

[!NOTA] Anche se il server di pubblicazione di SQL Server 2000 è configurato con il rilevamento a livello di colonna, la riga viene contrassegnata da SQL Server Compact Edition come se fosse stata modificata ogni colonna. Il rilevamento a livello di colonna è supportato solo con i server di pubblicazione di SQL Server 2005.

Utilizzo di sistemi di risoluzione

Dopo il rilevamento di un conflitto, l'agente di merge avvia il sistema di risoluzione dei conflitti selezionato per l'articolo. Può trattarsi del sistema di risoluzione predefinito, di uno degli altri sistemi di risoluzione disponibili o di un sistema di risoluzione personalizzato. Le modifiche accettate vengono scelte in base alle regole del risolutore di conflitti. I conflitti del Sottoscrittore di SQL Server Compact Edition vengono sempre rilevati, risolti e registrati nel server di pubblicazione.

Importante:
L'accesso multiutente consente le modifiche ai dati durante la sincronizzazione. Queste modifiche possono provocare un conflitto lato client, che viene rilevato, ma non risolto, nel Sottoscrittore. Il conflitto verrà rilevato nuovamente e risolto nel server di pubblicazione durante la sincronizzazione successiva. Per ulteriori informazioni, vedere Accesso multiutente e sincronizzazione.

Per risolvere i conflitti, i sistemi di risoluzione possono utilizzare l'origine della modifica dei dati o il valore di priorità del Sottoscrittore. Il sistema di risoluzione predefinito, ad esempio, segue la regola in base alla quale le modifiche sul Sottoscrittore vengono sempre sovrascritte dalle modifiche sul server di pubblicazione. È possibile scegliere di utilizzare un sistema di risoluzione diverso per dare sempre la priorità alle modifiche sul Sottoscrittore rispetto a quelle sul server di pubblicazione.

[!NOTA] Il valore di priorità dei client di SQL Server Compact Edition è sempre 0. Pertanto, un sistema di risoluzione basato su un valore di priorità non concederà la priorità alle modifiche apportate sul dispositivo.

Per ulteriori informazioni sul rilevamento e sulla risoluzione di conflitti, vedere "Rilevamento e risoluzione di conflitti tra repliche di tipo merge" nella documentazione in linea di SQL Server.

[!NOTA] Gli strumenti di risoluzione dei conflitti tra repliche di tipo merge basati su stored procedure non sono supportati dalle sottoscrizioni di SQL Server Compact Edition.

Utilizzo di sistemi di risoluzione personalizzati

I sistemi di risoluzione personalizzati consentono di aggiungere la regola business alla replica. Un sistema di risoluzione personalizzato è una DLL incorporata nel codice gestito o nativo. Per essere utilizzato, il sistema di risoluzione personalizzato deve essere registrato sul server di pubblicazione e sul server che esegue IIS utilizzando la stored procedure sp_registercustomeresolver. La stored procedure sp_registercustomeresolver include il parametro is_dotnet_assembly , che viene impostato su true per un sistema di risoluzione incorporato nel codice gestito o su false per una DLL nativa.

Importante   Un sistema di risoluzione personalizzato deve essere registrato nel computer che esegue IIS oltre che nel computer che esegue SQL Server.

Vedere anche

Guida in linea e informazioni

Assistenza su SQL Server Compact Edition