Je tente de synchroniser une base de données SQL Server CE 3.5 avec une base de données SQL Server 2008 à l'aide de MS Sync Services. J'utilise VS 2008. J'ai créé un cache de base de données locale, je l'ai connecté avec SQL Server 2008 et j'ai choisi les tables que je voulais synchroniser. J'ai sélectionné SQL Server Tracking. Il a modifié la base de données pour le suivi des modifications et créé une copie locale (SDF) des données.Les services de synchronisation ne se synchronisent pas réellement
J'ai besoin d'une synchronisation bidirectionnelle. J'ai donc créé une classe partielle pour l'agent de synchronisation et ajouté du code dans OnInitialized() pour définir l'option SyncDirection des tables sur Bidirectionnel. J'ai parcouru avec le débogueur et ce code fonctionne.
Ensuite, j'ai créé une autre classe partielle pour le fournisseur de synchronisation du serveur de cache et ajouté un gestionnaire d'événement dans OnInitialized() pour se connecter à l'événement ApplyChangeFailed. Ce code fonctionne également bien - mon code s'exécute lorsqu'il y a un conflit.
Enfin, j'ai apporté manuellement quelques modifications aux données du serveur pour tester la synchronisation. J'utilise ce code pour déclencher une synchronisation:
var agent = new FSEMobileCacheSyncAgent();
var syncStats = agent.Synchronize();
SyncStats semble montrer le compte du nombre de changements que j'ai fait sur le serveur et montre qu'ils ont été appliqués. Cependant, lorsque j'ouvre le fichier SDF local aucun des changements sont là.
Je essentiellement suivi les instructions que je trouve ici:
http://msdn.microsoft.com/en-us/library/cc761546%28SQL.105%29.aspx
et ici:
Il semble que cela devrait "juste travail" à ce stade, mais les changements fait sur le serveur ne sont pas dans le fichier SDF local. Je suppose qu'il me manque quelque chose mais je ne le vois tout simplement pas maintenant. Je pensais que c'était peut-être parce que je semblais utiliser la version 1 de Sync Services alors j'ai supprimé les références à Microsoft.Synchronization. * Assemblies, installé Sync Framework 2.0 et ajouté la nouvelle version des assemblys au projet. Cela n'a fait aucune différence.
Des idées?
Edit: Je voulais activer le traçage pour voir si je pouvais le suivi de cette baisse, mais la seule façon de le faire est par le biais d'une application WinForms car il nécessite des entrées dans le fichier app.config (mon projet initial était une classe bibliothèque). J'ai créé un projet WinForms et recréé tout et tout à coup tout fonctionne. Donc, apparemment, cela nécessite un projet WinForm pour une raison quelconque? Ce n'est pas vraiment ce que j'ai prévu d'utiliser: j'avais espéré démarrer la synchronisation avec une autre application non-NET et y mettre l'interface utilisateur afin que l'expérience soit un peu plus simple pour l'utilisateur final. Si je ne peux pas faire ça, c'est OK, mais j'aimerais vraiment savoir si/comment faire de ce travail un projet de bibliothèque de classes à la place.
Avez-vous obtenu cela fonctionne? – JohnnyJP
J'ai remarqué que vous avez déjà essayé le fichier de trace, et que vous l'avez maintenant fait en utilisant un projet WinForm. Je suis d'accord que je ne vois pas pourquoi cela ne fonctionnerait pas avec une application de la console si. – JohnnyJP