Это не запрос. Это сводка нашего решения, чтобы обойти проблему коррупции в файлах SQL Compact Database с (почти) определенным успехом. SQLCE Коррупция - очень распространенная проблема. Мы получили огромную помощь от более ранних сообщений в StackOverflow и, следовательно, этого сообщения.
Наш продукт представляет собой трехуровневую архитектуру с сервером, работающим как служба Windows, подключенную к Rich Клиентам через .Net Remoting. Наш продукт использует SQLCE с 2006 года. Мы перешли с v3.1 на v3.5 и теперь на v4.0. У нас есть пользовательский инструмент OR-Mapping для некоторых очень специфических требований. Мы столкнулись с ограниченными проблемами с v3.1, мы больше столкнулись с v3.5 и v4.0.
Изначально с v3.5 мы реализовали SqlCeEngine.Repair
. Но он только снижает поврежденные данные и пытается воссоздать стабильный db. Мы обнаружили, что внешние ключи затронутых таблиц пропали. Мы должны были немедленно устранить это. Мы начали уведомлять пользователей о повреждении db и восстанавливать последнюю резервную копию. Это обеспечило лишь временное облегчение; проблема коррупции все еще сохранялась.
В этом году мы приняли v4.0. Однако наше приложение также представило несколько новых функций, которые значительно увеличили количество вызовов в базе данных. v4.0 начался хорошо, но начал давать проблемы при увеличении использования программного обеспечения. Повреждения, возникающие во время работы приложения, не вызваны сбоем Windows, ненормальными остановками или проблемами с диском. База данных просто повреждена.
В следующей статье рассматривается решение, которое мы разработали для этой проблемы: