Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 5 Справка в VFP Обработка ошибок Отла...doc
Скачиваний:
1
Добавлен:
20.08.2019
Размер:
2.18 Mб
Скачать

2.6.Обробка ушкоджених файлів

Файл даних дуже легко може бути ушкоджений. Оскільки обсяг файлу значно перевищує обсяг оперативної пам'яті комп'ютера, Visual FoxPro безупинно перекачує дані з файлу в пам'ять і назад. Якщо все нормально, то ніяких ускладнень при цьому не виникає. Але якщо користувач раптово виключить комп'ютер, не вийшовши з програми… У такому випадку дуже імовірно, що файл не буде цілком записаний. Те ж саме може відбутися, якщо програма завершує роботу в процедурі обробки помилок, не закривши усі відкриті файли таблиць. На жаль, єдиний радикальний спосіб охоронити файли від ушкоджень подібного роду лежить не в області програмного забезпечення, а у використанні відповідних апаратних засобів, зокрема джерел безперебійного живлення. Програмними ж засобами можна тільки відстежити і по можливості парирувати наслідки вже існуючої помилки в структурі файлу даних.

Звичайно, найпростіший спосіб відновити ушкоджений файл — використовувати збережену раніше його резервну копію з стрічки чи диска. Якщо резервне копіювання виконується щодня, ви ризикуєте тільки результатами роботи за поточний день. Але навіть така втрата небажана. Для колишніх версій FoxPro можна було використовувати такі програми відновлення індивідуальних файлів таблиць, як dSalvage, розроблену фірмою Comtech, і FoxFіx, розроблену в Hallogram (www.Hallogram.com). Але для файлів більш складної структури, що використовуються в Vіsual FoxPro, ці програми не годяться. Для цих цілей можна порекомендувати Stonefіeld Database Toolkitіt від Stonefіeld Systems Corp (www.stonefіeld.com). Інший дуже ефективний інструмент — xCase for Fox від RESolutіon Ltd (його можна знайти на сервері www.fltech.com). Оскільки компоненти бази даних дуже тісно зв'язані усередині файлу, для роботи з ними потрібно, крім звичайних засобів формування резервних копій, обов'язково обзавестися цими інструментальними засобами. У повсякденній роботі з базами даних Visual FoxPro вам знадобляться засоби для виконання наступних операцій:

  • виправлення помилок у заголовках файлів;

  • відновлення загублених Мемо — полів;

  • повторна індексація таблиць у DBC-файлі зі збереженням існуючих відносин або цілісності коду;

  • супровід контейнера баз даних — зміна імен таблиць, полів, властивостей полів і т. п.;

  • відновлення структури бази даних чи відновлення структур окремих її компонентів.

Ушкодження індексних файлів виникають у випадку переносу резервної копії DBF — файлу у відриві від відповідної йому резервної копії індексу. У цьому випадку зміни, внесені в оригінальний DBF-файл, тобто той, котрий заміняється резервною копією, відповідно відбиваються в його індексі, але відсутні в резервній копії. У результаті індекс може вказати не на той запис, не знайти потрібного запису чи узагалі вказати на неіснуючий запис за межами файлу. Положення погіршується тим, що контейнер бази даних (DBC — файл) відслідковує інформацію й у таблиці й в індексі.

Проблема з окремим файлом індексу може бути улагоджена повторним індексуванням таблиці. Однак навіть команді REІNDEX не допоможе, якщо зіпсований заголовок файлу. За старих часів простих баз даних можна було застрахуватися, зберігши індексні вираження в окремій таблиці, чи словнику просто виписавши на лист папера і сховавши його в шухляду столу. Потім при необхідності ушкоджений індексний файл видаляється, відкривається потрібна таблиця .DBF, і індекс відновлюється. Але такий спрощений підхід тепер тільки додає “головний біль” базі даних Visual FoxPro, оскільки при цьому можна втратити іншу інформацію про файли — відносини між таблицями і процедури відстеження посилальної цілісності.

Хоча DBC — файл і містить запис для посилання на будь-яке ім'я тега, він не зберігає ні індексного вираження, ні інформації про будь-який інший індекс (автономний чи неструктурований). А звідси випливає, що кращий спосіб цілком зруйнувати структуру бази даних — це просто скопіювати резервну копію якої-небудь таблиці в поточний каталог. Ви зможете одержати ще більше інформації про умови підтримки цілісності бази даних, якщо запустите з командного вікна команду VALІDATE DATABASE.

Додаткові складності виникають при ушкодженні файлів форм, етикеток і звітів. Visual FoxPro запам'ятовує інформацію, що стосується цих об'єктів, і в DBF -, і в Мемо — файлах. Так що тут чекають складності того ж порядку, що і при роботі з ушкодженими індексами. У Таблиця 2 перераховані розширення імен файлів для головних програмних компонентів системи.

Таблиця 2 Розширення імен файлів для головних програмних компонентів Vіsual FoxPro

Уміст файлу

Розширення для даних

Розширення для MEMO

База даних

.DBC

.DCT

Меню

.MNX

.MNT

Класи

.VCX

.VCT

Проект

.PJX

.PJT

Етикетка

.LBX

.LBT

Звіт

.FRX

.FRT

Екран

.SCX

.SCT

Таблиця

.DBF

.FPT

На закінчення дійдемо невтішному висновку: хоча в деяких випадках і вдається справитися з ушкодженням файлів чисто програмними засобами, єдиний радикальний спосіб боротьби з цими “окремими недоліками” — запастися резервною копією і регулярно її обновляти. Найкраще використовувати який-небудь мобільний носій чи то стрімер, оптичні диски, Flash накопичувач і зберігати резервну копію в надійному потаєному місці.