Stockage de certaines données SQL Server hors connection

Je commence à concevoir un nouveau système de gestion de données de test en laboratoire avec de nombreuses stations d'essai (environ 30).

Le système doit être capable de collecter des données hors ligne en cas de panne de réseau.

Chaque station conserverait une copy à jour, en lecture seule, des structures de test (spécifications, types d'entités, règles métier / stream de travail, etc.), mais pas des données de test. Les données de test réelles seraient stockées localement si le server était introuvable.

Il devrait y avoir une sorte de synchronisation pour se préparer à une panne de réseau. La synchronisation tirerait les structures de test mises à jour. Une autre synchronisation pousserait datatables de test non sauvegardées.

Comment recommandz-vous que j'accomplisse cela? Des mises en garde?

Idées / Pensées:

  1. Installez le server SQL sur chaque machine et écrivez des scripts pour synchroniser le server et les clients (cela semble cher et excessif).
  2. Enregistrez la copy locale des données dans les files de données brutes définis par l'application avec des scripts de synchronisation.
  3. Y a-t-il quelque chose de construit dans SQL Server pour permettre aux clients de collecter des données hors ligne?
  4. Sauvegardez toutes datatables localement, puis click un button "Transférer" pour transférer datatables sur le réseau.

Environnement: MS SQL Server s'exécutant sur Windows Server 2008

Utilisez les instances SQL Express locales et transmettez datatables via Service Broker. Voir Audit en time réel de Contiguos à haut volume et ETL pour une explication de ce qui est meilleur que la réplication de plusieurs points de vue, y compris le prix, la performance et la fiabilité.

Avec la réplication, vous devez disposer d'une licence supérieure à SQL Express sur tous les nœuds périphériques (car Express ne peut être abonné que dans une topologie de réplication). L'utilisation de SSB pour pousser datatables permet d'avoir des instances SQL Express à la périphérie et ne nécessite qu'un server sous licence non-express central. Cela signifie que vous pouvez facilement déployer la solution sur des dizaines de stations de travail sans vous soucier des coûts de licence SQL Server.

Un autre avantage est la performance et le débit. SSB a été conçu pour gérer des centaines et des milliers de pairs en communication et a été conçu avec un contrôle de stream hiérarchique sophistiqué capable de traiter des tentatives pour des milliers de destinations en présence de défaillances réseau (je le sais car j'étais membre de la SSB) équipe). La réplication par comparaison utilise le protocole TDS pour l'échange de données, s'appuie sur des jobs SQL Agent et gère les pannes de réseau de manière simplist, ce qui peut entraîner la répétition de plusieurs cycles lors de nouvelles tentatives. Dans l'set, SSB peut gérer de grands deployments (je connais des deployments de +1500 servers, et MySpace est devenu public avec leur deployment de +500 servers qui repose sur SSB pour échanger datatables.) Globalement, à grande échelle, SSB surpasse la réplication.

Je ferais aussi valoir qu'une solution basée sur la messagerie plutôt que sur la copy de lignes de table est plus appropriée pour la description du problème: pousser les résultats vers le server central.

L'inconvénient (et n'est pas mineur) est la courbe d'apprentissage abrupte requirejse pour déployer initialement la SSB. Le savoir-faire existe mais il est difficile à find, et SSB ne dispose pas des outils perfectionnés tels que Replication Monitor qui simplifient le deployment d'une simple topologie de réplication. D'autre part, SSB a un grand avantage lors de la mise à niveau des deployments, car les versions 2005/2008 / 2008R2 sont parfaitement compatibles .

Ma première pensée serait de merge la réplication avec des copys locales ( SQL Server Compact ) de la database.

Il semble que la réplication SQL Server soit la solution que vous souhaitez extraire. La réplication de fusion permettra aux stations de test locales de recevoir la copy des données du server et de renvoyer datatables collectées pendant les interruptions du réseau.