Интересная проблема: у меня есть база данных SQL Server CE 3.5 с некоторыми данными. Я выполняю запрос к базе данных с помощью мобильного устройства и получаю набор результатов.
В 99% случаев это работает нормально, но иногда я получаю записи в базе данных, где запрос возвращает пустой набор результатов.
Если я беру копию того же файла базы данных со своего мобильного устройства и подключаюсь к нему с помощью анализатора запросов, а затем запускаю тот же запрос точный (как скопированный / вставленный из отладчика), запрос возвращает записи. Сам запрос выполняет JOIN и GROUP BY для двух таблиц с помощью поля ссылочного ключа идентификации.
Теперь, если я сделаю клон тех же записей, задействованных с помощью серии:
INSERT INTO MyTable (EntireFieldListExceptForIDKey)
SELECT
(EntireFieldListExceptForIDKey)
FROM
MyTable
WHERE
IDKey = Original
Теперь запрос может правильно собрать набор результатов для клонированных записей на мобильном устройстве.
Может ли кто-нибудь объяснить это и, возможно, как обнаружить / преодолеть?
Скорее всего, это связано с повреждением индекса, так как копирование файла на рабочий стол и создание новой таблицы вызовут перестроение индекса.
Рекомендуется регулярно сжимать вашу базу данных, чтобы предотвратить это - также убедитесь, что вы используете последние исполняемые двоичные файлы.
@DaveMonkman Пожалуйста, отметьте это как ответ, если он решил вашу проблему - TIA
K gotcha, я открываю термоусадочную пленку, которой, как я считал, было достаточно.