Повреждение базы данных SQL Compact Edition - PullRequest
3 голосов
/ 16 марта 2010

Наш продукт использует MS SQL Compact Edition на компьютере с Windows (ноутбуке).В основном это индекс метаданных для файлов, которые мы имеем в файловой системе.Недавно мы видели, как базы данных были повреждены.

Это происходит, когда машина очень занята перемещением файлов и должна одновременно вносить небольшие изменения в базу данных.

Я был несколько шокирован, что это вообще было возможно.Я ожидал, что база данных останется последовательной при любых обстоятельствах.

Конечно, мы делаем что-то не так.До сих пор мы проверяли следующее:

  • Использование только одного соединения в дБ на поток
  • укажите максимальный размер при открытии базы данных

База данныхДоступ к нему осуществляется только одним приложением - службой Windows на основе .net.Есть ли другие готы?

1 Ответ

3 голосов
/ 16 марта 2010

Возможно, вы захотите добавить свойство интервала очистки в SqlCeConnection строку подключения объекта. Из MSDN:

интервал сброса или ssce: интервал сброса -> Указанный интервал времени (в секундах) перед всеми зафиксированными транзакции сбрасываются на диск. Если не указано, значение по умолчанию 10.

Вы также можете подумать о создании кода, чтобы попытаться восстановить вашу базу данных . Никаких гарантий, но стоит попробовать.

...