2010-03-16 9 views
3

Notre produit utilise MS SQL Compact Edition sur un ordinateur Windows (ordinateur portable). Il s'agit essentiellement d'un index de métadonnées pour les fichiers que nous avons sur le système de fichiers. Récemment, nous avons vu des bases de données corrompues. Cela se produit lorsque la machine est très occupée à déplacer des fichiers et qu'elle doit effectuer un tout petit peu de modification de la base de données en même temps.Corruption de la base de données SQL Compact Edition

J'étais un peu choqué que ce soit possible. Je m'attendais à ce que la base de données reste cohérente quelles que soient les circonstances.

Bien sûr, nous faisons quelque chose de mal. Les choses que nous avons vérifié à ce jour sont:

  • Utilisation d'une seule connexion db par thread
  • spécifier la taille maximale lors de l'ouverture de la base de données

La base de données est accessible uniquement par une seule application, a. service basé sur Windows net. Y a-t-il d'autres trucs?

+0

Par "corruption", voulez-vous dire charabia au hasard à la place de vos enregistrements, sinon la base de données ne pourrait pas être lue; ou voulez-vous dire que la base de données est dans un état incohérent (mais est lisible, même si les données sont incorrectes)? –

+0

@Kyralessa: La base de données ne peut plus être ouverte. –

+0

Quelle version de SqlCe utilisez-vous? –

Répondre

3

Vous pouvez envisager d'ajouter la propriété d'intervalle de vidage à la chaîne de connexion de votre objet SqlCeConnection. De MSDN:

rinçage intervalle ou ssce: Intervalle de rinçage -> spécifié l'intervalle de temps (en secondes) avant que toutes les transactions sont engagés vidées sur le disque. Si pas spécifié, la valeur par défaut est 10.

Vous pouvez également envisager la création d'un code pour tenter de repair your database. Aucune garantie, mais ça vaut le coup d'essayer.

+0

Merci, je vais vérifier cela. –

+0

Nous ne saurons jamais la cause du problème original, mais merci de partager vos conseils. –

Questions connexes