Sync incubo - è possibile utilizzare Merge Replication (o RDA) tra le istanze 2 SQL CE senza IIS?
-
18-09-2019 - |
Domanda
Ci troviamo di fronte con il seguente problema che coinvolge mantenendo il seguente in sincronia:
- 1 server centralizzato (IIS / MSSQL 2005)
- Molti clienti desktop WPF distribuiti da ClickOnce
- Molti clienti mobili - (Windows CE)
alt text http://img502.imageshack.us/img502/8246/deployment .png
Con questi vincoli spinosi:
- tutte le relazioni di sincronizzazione sono bidirezionali
- i nodi del desktop e mobili richiedono modalità non in linea
- i nodi mobili non può sincronizzare con il server centrale, ma sono per la sincronizzazione con i nodi del desktop tramite USB. I nodi del desktop agiscono come server per i client mobili, non il server centrale. Aggiornamenti dai nodi mobili devono poi propagarsi al server centrale in virtù della sincronizzazione con il desktop, e quindi la sincronizzazione che desktop con il server centrale. uff .
Nasty.
Per sincronizzare il desktop e server di sappiamo di poter usare Merge Replication - il server essere un fornitore, il desktop come un abbonato, tutto bene. Ma per quanto riguarda la sincronizzazione dei nodi mobili e desktop? Apparentemente il desktop non può essere un editore senza SQL Server + ISS, giusto? Siamo in grado di distribuire solo MSSQL CE al desktop.
Anche se questo fosse il caso, potrebbe essere un nodo sia abbonato e l'editore? Ho il sospetto che questa disposizione non è supportata dall'architettura Merge Replication -. Apparentemente hub and spoke è l'unico modello supportato
Stiamo cercando di stabilire se siamo in grado di eliminare RDA o replica di tipo merge come una possibile soluzione -. Se è così ci sarà probabilmente perseguire l'Sync Framework MS
Forse ci sono altre tecnologie che potremmo prendere in considerazione?
Grazie a tutti,
Ashley
AGGIORNAMENTO: Abbiamo appena iniziato ad avere un gioco con MS Sync Framework e rocce
Soluzione
Per ragioni non direttamente correlate alla tua domanda specifica, credo che si può andare avanti ed eliminare RDA / Merge Replication come una possibile soluzione. Microsoft non pubblicizzare questo (per ovvie ragioni), ma replica di tipo merge non è affidabile al 100% in condizioni in cui la connessione di rete può essere lasciato cadere nel bel mezzo del processo di replica (il che accade abbastanza di frequente con i clienti Windows Mobile).
Il risultato di questo problema è che le modifiche apportate ai database dei clienti sono a volte non pienamente propagate al database master, ma si ottiene alcuna indicazione rilevabile che questo è successo. Come potete immaginare, questa è una brutta cosa, soprattutto se hai venduto il tuo cliente su questa soluzione basata sul presupposto che RDA funziona come pubblicizzato. L'unica soluzione a breve termine che abbiamo trovato a questo problema è stato quello di implementare un goffo doppio processo di ridondanza per confermare che ogni record aggiunto o modificato sul client ha fatto al server senza errori. La soluzione a lungo termine era quella di utilizzare mai più RDA di nulla.
Questo problema potrebbe essere stato risolto nelle versioni recenti di RDA (il nostro problema si è verificato con la versione più recente 2 anni fa), ma io non so (una volta morso due volte timido).
Aggiornamento: a proposito, ho avuto molte persone con cui ho parlato su questo (tra cui tecnici di supporto Microsoft) negano che questo potrebbe essere vero, ma è molto facile verificare: aggiungere un po 'di dati sulla client, quindi avviare la replica, quindi tirare il cavo USB dal dispositivo (supponendo che il client è Windows mobile connette tramite ActiveSync), mentre nel mezzo di questo.
Se mi sembra un po 'irritato, è in parte perché questo era quello che la tecnologia MS è stato finalmente costretto a dire (citazione reale):. "Beh, basta tenere la replica - i dati si fonderanno alla fine"
Altri suggerimenti
Controlla la Collaboration Scenari ( peer to peer) in Microsoft Framework 2.0. I fornitori inclusi ci permettono due database SQL Server Compact per essere sincronizzati direttamente. Essi sono anche in grado di sincronizzare direttamente con altri fornitori.