Шаг 21 - RepairDatabase - Восстановление базы данных

Итак, база данных может быть повреждена. Вы увидите это, если будете открывать ее в Access. Возьмите файл, который прилагается к этому шагу и попробуйте открыть его в Access. Вы увидите вот такую надпись:

21_1.gif (4051 b)

В Access есть возможность восстановить файл. Вот здесь:

21_2.gif (5137 b)

Вы в своей программе можете предусмотреть такую же возможность. Вот пример когда по нажатию на кнопку в диалоговом окне производится процедура восстановления:

void CTestRepDlg::OnButton1() 
{
	CDaoWorkspace cd;
	cd.RepairDatabase("c:/error.mdb"); 
}

Функция такая:

static void PASCAL RepairDatabase( LPCTSTR lpszName );
throw( CDaoException, CMemoryException );

В lpszName содержится имя восстанавливаемой базы данных.

Сразу скажу, что не все восстанавливается. Я тут около 30 минут портил базу данных для того, чтобы ее можно было восстановить. То есть испортить не на совсем. Вот получилось. Что я сделал ??? Открыл ее в бинарном редакторе и стер название MSysModules2. Вот она и испортилась. Но самое обидное, что если Вы удалите часть файла, то уже не поможет ничего. Удалите кусок из середины или конец и уже все. А это и случается при отключении питания например. Так что восстановление не очень хорошее. Вообще это восстановление подразумевает другое. Я тут вычитал такую фразу. Если Ваша база данных ведет себя непонятным образом, то надо запустить восстановление.

Кстати как открыть базу данных в бинарном редакторе если его нет ??? Просто VC умеет. File->Open->error.mdb. И он откроет как бинарный файл. Вы можете явно это указать при открытии.

21_3.gif (2433 b)

И еще испортить можно так, что DAO совершит некорректную операцию. А это просто свинство. Я тут как испортил ?! Запустил Access, чтобы он восстановил, а он вылетел сославшись на DAO. Как это понимать ??? Microsoft try поленилась поставить ??? Или эта ошибка не дала исключения, а просто выбила код.

Кстати по поводу успешного восстановления, как оптимистически пишет Access. То что файл откроется не говорит о том, что там будет Таблица или Ваши данные. Вот и верь им потом.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 15.04.2001