powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снижение бысродействия сжатой MDB базы
4 сообщений из 4, страница 1 из 1
Снижение бысродействия сжатой MDB базы
    #32175173
RioRio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исходные данные
- установлены Access 97 + Jet4.0
- Есть база с несколькими индексированными таблицами
- База создана в формате 3х
- программа на С++

Для сжатия использую
WideString wsSource = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+aBaseFileName;
WideString wsDestination = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=4;Data Source="+tmpBaseName;
Variant JE = Variant::CreateObject("JRO.JetEngine");
JE.OleFunction("CompactDatabase", wsSource, wsDestination);

Те хочу получить 3х же базу.

Результатирующая база работает раз в 10 медленне исходной.
Если тоже делаю из 97 Accessa то быстродействие ОК
Если Jet OLEDB:Engine Type=5 то быстродействие ОК

Думаю, что проблема в том, что 4й Jet не совсем хорошо пересоздает индексы.

Пробовал указать Provider=Microsoft.Jet.OLEDB.3.5 - ошибка.

Что посоветуете?

Спасибо.
...
Рейтинг: 0 / 0
Снижение бысродействия сжатой MDB базы
    #32175212
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй сжимать не через JRO.JetEngine, а через метод DAO -> dao.DBEngine.CompactDatabase ...
...
Рейтинг: 0 / 0
Снижение бысродействия сжатой MDB базы
    #32175215
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я неоднократно сжимал базы по всему диску своей программой и никто вроде не замечал снижения быстродействия.

Вот содержательная часть текста (CString cBase — путь к базе с расширением):

#include <odbcinst.h>

BOOL retcode = SQLConfigDataSource(
NULL,
ODBC_ADD_DSN,
"Microsoft Access Driver (*.mdb)",
"COMPACT_DB="+cBase+" "+cBase);

Версия базы при этом сохраняется.
Могу прислать или выложить программу или текст.
Если попробуешь — расскажи о результатах.
...
Рейтинг: 0 / 0
Снижение бысродействия сжатой MDB базы
    #32175223
RioRio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
try
{
AnsiString cmdString = "COMPACT_DB="+abaseFileName+" "+abaseFileName+" General";
int attribLen = cmdString.Length();
attribString = new UCHAR[attribLen + 2];
if(attribString == NULL)
return false;

strcpy(attribString, cmdString.c_str());
attribString[attribLen + 1] = '\0';

UCHAR driverName[] = "Microsoft Access Driver (*.mdb)";
rc = SQLConfigDataSource(NULL, ODBC_ADD_SYS_DSN, driverName, attribString);
}

Именно после подобного сжатия я и уперся в снижения (до 10ти раз)
производительности.
А потом стал пробовать другие способы.

Еще раз подчеркну важный момент
Версия MDB - 3х, а Jet стоит 4
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снижение бысродействия сжатой MDB базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]