Сжатие базы Access-97

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сжатие базы Access-97

Сообщение Alexanbar » 05.10.2004 (Вт) 21:26

Сегодня обнаружил, что база перестала сжиматься. Вначале думал, что есть ошибка в программе или в файловой системе и прочие неприятности.
Запускаю MS-Access-97 -та же история - пишет что-то типа "нельзя прочесть".
Очищаю или удаляю одну из таблиц (или очищаю наполовину) - сжатие становится возможным.
Размер базы ~23 Мб.

Можно ли с этим как-нибудь бороться?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.10.2004 (Ср) 8:57

А чем сжимаешь? Может попробовать ADO (JRO)?
Lasciate ogni speranza, voi ch'entrate.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 06.10.2004 (Ср) 17:51

Пробовал сжимать разными способами.
1) программно
DBEngine.CompactDatabase InputFile,OutputFile
2) Из меню Access-97 Служебные программы-->Сжать базу

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 06.10.2004 (Ср) 19:34

А ошибку поточнее не одскажешь? Может, все-таки найдем, в чем дело...

например, нашла такое:
http://support.microsoft.com/default.as ... -us;301869
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 07.10.2004 (Чт) 0:22

Выдаётся ошибка 3112:

Record(s) can't be read; no read permission on путь к базе

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.10.2004 (Чт) 1:32

Значит, та статья с support.microsoft.com тебе поможет :-)
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.10.2004 (Чт) 1:44

(Как она их находит... Я как поищу в MSDN, так не меньше 100 ссылок, и все не те...)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 07.10.2004 (Чт) 9:59

Я не в MSDN ищу ;)

Эх, ладно... Раскрою секрет. Так, может, народ научится сам находить решение.
1) Смотрю на пост. Там написано "нельзя прочесть".
2) Перевожу - "cannot be read"
3) Ищу эту строку + еще несколько ключевых слов (в данном случае Compact) на www.deja.com
4) Читаю людские проблемы - там частенько либо приводят статью из MSDN целиком, либо ссылку. Ссылки, правда, обычно не работают, но по номеру или части текста статьи находятся.

Занимает это минут 10-15 максимум :)
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 07.10.2004 (Чт) 20:47

Прочёл статью, но не нашёл, чем она может мне помочь- используется база только одним пользователем, только одним приложением, и никому не запрещён доступ к ней, т.е. советы по наделению пользователей полномочиями, по-моему, не причём. Удаляю из одной таблицы половину данных - всё начинает работать

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 08.10.2004 (Пт) 11:00

Удалять можно из любой таблицы?
Все-таки, такое сообщение говорит о том, что с самой базой что-то не впорядке. То есть Access не может, видимо, по каким-то причинам перекачать данные в новую базу, которую он создает во время компакта...
Таблиц в базе много? Руками перекидать запросы и таблицы в новую базу сложно? Насколько сложно написать такой импорт на VB?
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 08.10.2004 (Пт) 11:17

Мне почему-то тоже кажется, что файл базу банально поврежден. Цикл по MSysObjects по всем таблицам и BULK INSERT в новый файл БД. Ну или обычный инсерт, если в аксессе балка нет...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 08.10.2004 (Пт) 15:01

И по возможности (если она есть) перейти на SQL-Server. Меня в свое время падения базы Access-a сильно достали. А с переходом на SQL-Server забыл что это такое...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 08.10.2004 (Пт) 15:29

Andrey Fedorov, только если упадет SQL-Server это гораздо серьезнее, чем "падение" MDB-файла :) Не говоря уж о том, что MS SQL Server стоит денег и хочет много ресурсов.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 08.10.2004 (Пт) 16:31

только если упадет SQL-Server это гораздо серьезнее, чем "падение" MDB-файла


Волшебное слово бэкап - делается ежедневно. Это от кардинального разрушения винчестера. А, главное, база рушится когда кто-то из пользователей некорректно выходит из программы (что делают локальные СУБД)...

Не говоря уж о том, что MS SQL Server стоит денег и хочет много ресурсов.


Несколько $ за Developer версию (для разработчика) + бесплатный MSDE (собственно для базы). Неужели это дорого?
Ресурсов он хочет не столь уж и много - у нас сейчас обычная персоналка с ним стоит, а до этого сервер вообще полгода жил на соседней машине (на которой человек работает ;) ).

Ограничения в 2Gb на размер базы в MSDE большинству контор хватит на многие годы... Почему-то все забывают про такой вариант, практически бесплатный вариант.

Ну а конторы с сотнями пользователей и гигантскими базами могут позволить себе раззориться на Enterprised версию.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 08.10.2004 (Пт) 17:01

Выяснил, что мешает базе сжиматься, но не понял, почему это мешает.
Есть 1-3 записи одной из таблиц. При удалении этих записей база начинает успешно сжиматься.
Пробовал сделать такой эксперимент- удалил из базы всё (табицы и данные), корме этих дефектных данных - база не сжимается - выдаются сообщения типа " используется другим".
Можно в режиме конструктора удалить одно поле, и тогда тоже база начинает сжиматься.
Что там произошло - не понятно.
Тип поля - поле объекьа OLE.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 08.10.2004 (Пт) 17:36

Хм... Мда, у меня нет идей.

А зачем тебе в базе поля OLE? Они же очень сильно увеличивают размер базы. Ты что там хранишь?

Еще посмотри http://support.microsoft.com/default.as ... -US;182867 (там есть ссылка на другую статью)
Может, стоит попробовать запустить JetComp.exe - он, вроде, по их словам чем-то отличается от простого компакта и может зареперить базу.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 08.10.2004 (Пт) 18:31

Храню я там всё, что приходит по почте, в частности, само присьмо в формате HTML и влождения. Никакого другого типа поля для таких данных выбрать не получается - ведь вложение может занимать и 1 байт, и 1 Мбайт.
Почитал бегло статью, скачал JET35sp3.exe. Попробую разобраться

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 09.10.2004 (Сб) 17:42

Обновил библиотеки, запустил JetComp.exe.
Такая же история.
Те дефектные записи в базе мне не сильно нужны - это рекламное письмо, к тому же не первое на эту тему.
Вопрос только вот в чём- как такую ситуацию предотвратить для пользователей. Вроде комп не вешался. Аварийного выключения, наверное, тоже не было.
Похоже, что надо составить код для сквозной проверки базы на чтение.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList