![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сбои в БД [D5, Paradox]
grifon_nn © (2003-06-25 11:26:00)Такая проблема: у клиента иногда бывают глюки со светом, поэтому база периодически рушится. Можно ли уберечься от этой беды. ИБП не предлагать - знаю. Сам их уговариваю купить.
Рушится похоже файл с индексами.
Anatoly Podgoretsky (2003-06-26 20:28:00) [1]grifon_nn (26.06.03 00:24)
Нет, которые есть в базе, судя по подходу пользователя, ему все равно пропадут они или нет, так зачем ждать, сразу Format Disk-
Вот если данные ценные и их потеря и последующее восстановление обойдутся всяко более 200 долларов (а это достаточно для покупки управляемого ИБП), то заказчик приобрел бы ИБП и не тратил деньги на восстановление индексо и не дай бог всех данных.
Я бы отказался от соотрудничества с таким заказчиком, поскольку козлом отпущения окажешься ты.
mike-d (2003-06-26 20:06:00) [2]> Stas © (26.06.03 13:11)
> Если вырубить питание, то любая база может запортачться.
Полностью согласен. Ни одна БД таких издевательств не выдерживает.
> grifon_nn
А что касается Paradox - посмотри по ссылке http://www.degisy.com/download.php?lang=rus- там в библиотечке Degisy Db есть компонент восстанавливающий структуру таблиц и индексы (работает только с BDE) - его можно встроить например в инициализацию программы.
В свое время я его использовал еще для апдейта структуры БД у клиентов. Правда был у него, помниться, глючок небольшой... По моему он не любит файлы *.VAL (хотя может они и исправили это). Лечится удалением всех файлов *.VAL из директории БД в момент запуска перед проверкой целостности структуры.
Удачи.
Stas (2003-06-26 13:11:00) [3]grifon_nn (26.06.03 00:21)
>В связи с этим вопрос: какой тип БД лучше использовать, чтоб >таких глюков поменьше было. Имеет ли смысл перестраивать >структуру существующей БД и насколько это будет затратно.
Если вырубить питание, то любая база может запортачться.
Я бы перешел на ACCESS.
MsGuns (2003-06-26 11:59:00) [4]А что, использовать архивы базы учредители не позволяют ?
Германн (2003-06-26 04:10:00) [5]Те самые, которые:
> to Соловьев: Это понятно, что клиент виноват. Уже не один раз им говорил, что если что случится с данными - я не отвечаю, им пофиг.
Проблемы с перебоями питания не решаются выбором типа БД. И любой тип БД может служить "средством перманентного обогащения" при "глупом" заказчике и "ловком" исполнителе. Но это только в "сладких" снах, а наяву оборачиваются только головной болью.
grifon_nn (2003-06-26 00:24:00) [6]>Anatoly Podgoretsky © (25.06.03 21:07)
>Эти данные ничего не стоят, их можно смело удалять не дожидаясь пропадания питания.
Простите, какие данные, которые были восстановлены? И почему их можно смело удалять?
grifon_nn (2003-06-26 00:21:00) [7]Спасибо за советы.
Ну хорошо, восстановлю я им индексы. Фиг с ними, заплатят. Благо оплачивают добросовестно :)
В связи с этим вопрос: какой тип БД лучше использовать, чтоб таких глюков поменьше было. Имеет ли смысл перестраивать структуру существующей БД и насколько это будет затратно.
Anatoly Podgoretsky (2003-06-25 21:35:00) [8]Давно такая методика используется, за все надо платить, так что лучше ситуации и не придумать.
Dred2k (2003-06-25 21:18:00) [9]
> Anatoly Podgoretsky © (25.06.03 21:10)
А что, неплохо. Парадокс как средство перманентного обогащения!
;)
Anatoly Podgoretsky (2003-06-25 21:10:00) [10]grifon_nn (25.06.03 11:26)
Да за каждый вызов по востановлению индексов требовать оплату в тройном размере и деньги вперед.
Anatoly Podgoretsky (2003-06-25 21:07:00) [11]Эти данные ничего не стоят, их можно смело удалять не дожидаясь пропадания питания.
Stas (2003-06-25 12:15:00) [12]Из хелпа
procedure fDbiRegenIndexes(TblName: TTable);
begin
Check(DbiRegenIndexes(TblName.Handle));
end;
или
procedure fDbiAddIndex3(Tbl: TTable);
var
NewIndex: IDXDesc;
begin
if not Tbl.Exclusive then
raise EDatabaseError.Create
("TTable.Exclusive must be set to true in order to " +
"add an index to the table");
with NewIndex do begin
szName := "NewIndex";
iIndexId := 0;
bPrimary := False;
bUnique := TRUE;
bDescending := True;
bMaintained := True;
bSubset := False;
bExpIdx := False;
iFldsInKey := 1;
aiKeyFld[0]:= 2;
bCaseInsensitive := True;
end;
Check(DbiAddIndex(Tbl.dbhandle, Tbl.handle, PChar(Tbl.TableName), szParadox, NewIndex, nil));
end;
Dred2k (2003-06-25 12:15:00) [13]http://www.torry.net/apps/utilities/database/dbdoctor.zip
Stas (2003-06-25 12:10:00) [14]Читай в хэлпе BDE32
grifon_nn (2003-06-25 11:57:00) [15]to Stas: а подскажите как это можно сделать, пожалуйста.
to Соловьев: Это понятно, что клиент виноват. Уже не один раз им говорил, что если что случится с данными - я не отвечаю, им пофиг.
Соловьев (2003-06-25 11:37:00) [16]
> ИБП не предлагать - знаю. Сам их уговариваю купить.
странный клиент однако... а если у него комп сгорит, а в это время твоя прога работала - он на тебя все спишет? ИМХО, клиент виноват, что не может обеспечить работоспособность своей техники, ну а с индексами попробуй, но все равно, данные и без этого могут пропасть... UPS - однозначно нужен!
Stas (2003-06-25 11:34:00) [17]Переиндексировать базу.
bushmen (2003-06-25 11:32:00) [18]Ты сам ответил на свой вопрос :)