Есть ли способ восстановить несохраненные (uncommitted) изменения БД, например в случае отключения питания?
01.01.2007
Дмитрий Кузьменко, (mailto:delphi@demo.ru)
Нет. Такие изменения будут потеряны.
Т.е. БД останется в состоянии,
соответствующем последней подтвержденной (committed) транзакции.
Несохраненные данные в БД останутся в виде "осиротевших" страниц,
которые можно очистить при помощи Server Manager, пункт меню Validate
Database, или в виде "мусорных" версий записей, которые будут
автоматически очищены при очередном чтении данных.
Вполне возможно, что этот вопрос вызван тем, что восстановление состояния БД в IB отличается от других широкораспространенных SQL-серверов (Oracle, Informix, ...). IB не требует выполнения каких-то специфических действий для продолжения работы с БД в случае сбоя питания - изменения, происходящие до COMMIT, не записываются на место актуальных данных (т.е. отсутствует режим Dirty Read), поэтому они будут просто потеряны, а БД останется в рабочем состоянии.
Примечание
считается что транзакция - логический блок действий, переводящий БД из одного целостного состояния в другое. Поэтому даже если сервер позволяет восстановить uncommitted изменения, то делать этого не стоит.
Cоставитель: Дмитрий Кузьменко
E-mail mailto:delphi@demo.ru
www: http://www.ibase.ru/
Телефоны: 953-13-34

