У меня есть приложение Access, которое использует классический подход front-end / back-end. Вчера бэкэнд был поврежден по причине, которую я не знаю. Поэтому я открыл бэкэнд с Access 2003 и access спросил меня, не хочу ли я восстановить файл, я сказал «да» и, похоже, он работает.
Я могу открыть базу данных, просмотреть содержимое таблиц и выполнить большинство запросов.
Однако есть запрос на доступ, который не работает с конкретным предложением where.
Пример:
// This works in the original DB, but not in the compacted one :
SELECT a, b, c
FROM tbl1 INNER JOIN tbl2 ON tbl1.d = tbl2.d
WHERE e = 3 AND tbl2.f = 1;
// This works in both the original and the compacted one :
SELECT a, b, c
FROM tbl1 INNER JOIN tbl2 ON tbl1.d = tbl2.d
WHERE e = 3;
Когда я пытаюсь выполнить запросы, ничего не происходит. Процесс доступа начинает использовать большую часть процессора, а графический интерфейс перестает отвечать на запросы. Если я запускаю запрос из редактора запросов, я могу использовать Ctrl + Break, чтобы остановить выполнение. Я пытался уделить запросу много времени, но это не помогло.
Я проверил план выполнения в showplan.out, и он кажется правильным (по крайней мере, выполнение не должно длиться вечно)
Я снова попытался сжать БД. Я пытался импортировать таблицы в новой БД. Я даже пытался импортировать таблицы и их данные в файл mdb, который был теперь в хорошем состоянии (из резервной копии).
У кого-нибудь есть идея?