2013-05-08 28 views
6

Mi rendo conto che questo argomento è molto discusso, ma tutti i suggerimenti che vedo sembrano implicare l'accesso diretto a SQL Server, che nel nostro caso non è l'ideale.Il modo migliore per sincronizzare il database SQL Server remoto con il database SQL Server Compact locale?

Il nostro scenario è un database SQL Server remoto con (diciamo) 100 tabelle. Stiamo sviluppando un'applicazione desktop leggera che utilizzerà un database SQL Server Compact e sincronizzerà periodicamente un sottoinsieme di (diciamo) 20 tabelle con il server remoto.

Mi piacerebbe avere il controllo su come avviene la replica perché la velocità è un grosso problema per noi dal momento che il server remoto si trova a 1000 di miglia di distanza.

Inoltre, non è necessario sincronizzare tutti i record in ogni tabella, solo quelli rilevanti per ciascun utente.

Mi piace molto la funzione SQL Merge tuttavia richiede che il client sia connesso al server SQL remoto. Questo al momento non è possibile e stavamo pensando di interfacciarci al server remoto attraverso un servizio web accessibile tramite la nostra applicazione o qualche altro metodo.

Qualsiasi suggerimento benvenuto.

UPDATE

solo per chiarire, la connessione Internet sarà intermittente, questo è il motivo principale per cui abbiamo bisogno di sincronizzare i due database.

risposta

1

Il fatto che si utilizzi un db compatto per il client pone alcune limitazioni piuttosto pesanti per le opzioni disponibili in questo scenario.

Considerate le limitazioni e i requisiti di prestazione desiderati, è possibile prendere in considerazione l'implementazione di un endpoint http basato sul servizio per mantenere sincronizzate le tabelle desiderate. Se la tua architettura lo consente, farlo in modo asincrono aumenterebbe le prestazioni in modo significativo ma, di nuovo, potrebbe non essere nemmeno praticabile a seconda della tua architettura.

Qualcos'altro da considerare è l'utilizzo di socket Web anziché connessioni HTTP standard per un servizio Web come menzionato sopra. In questo modo è possibile mantenere i client sincronizzati in tempo reale, poiché i socket Web sono connessioni real-time completamente duplex. La cosa più importante è che dovresti assicurarti che tutti i client siano compatibili con il web-socket o che forniscano un back-back per emulare una connessione web-socket con un framework di emulazione per i client che non sono all'altezza.

Non sono sicuro se questo è di aiuto.

0

Non si può utilizzare il framework MS Sync?

Praticamente progettato per il tuo scenario AFAIK.

Google Quick trasformato questo tutorial up ...

http://social.technet.microsoft.com/wiki/contents/articles/2190.tutorial-synchronizing-sql-server-and-sql-server-compact-sync-framework.aspx

+0

È possibile utilizzare MS Synch Framework su HTTP? Ho pensato che fosse necessario un collegamento diretto a entrambi i database? – cusimar9

+0

Credo di sì in base alla risposta qui: http://stackoverflow.com/questions/503832/sync-framework-can-you-sync-over-http – nakchak

Problemi correlati