Показаны сообщения с ярлыком fdbconvert. Показать все сообщения
Показаны сообщения с ярлыком fdbconvert. Показать все сообщения

12 окт. 2015 г.

Японцы переизобрели велосипед и выпустили утилиту конвертации БД Firebird:

...на 7 лет позже нашего FDBConvert:

17 нояб. 2011 г.

100% clean

FileCluster проверил нашу уилиту FDBConvert четырьмя антивирусами и выдал такой бэдж:

FDBConvert antivirus report at FileCluster.com

21 окт. 2011 г.

FDBConvert на Softpedia

Softpedia добавила нашу утилиту FDBConvert в каталог и, соответственно, разместила дистрибутив на своих зеркалах. Тем временем, счетчики нашего сайта показывают суммарно 4300 скачиваний инстоляции и архива в формате PortableApp.

Если, в первом приближении, взять по десять конвертаций на одну утилиту, то по всему миру порядка 50 000 баз данных переведено на Firebird 2.5 с нашей помощью. Если бы еще и брать по доллару за конвертацию...

UPD: китайцы оказывается тоже заинтересовались.

UPD2: и FileCluster.

5 мая 2011 г.

Value exceeds the range for valid dates

Придешь на работу с наилучшими намерениями, а в результате битый день носишся вокруг костра и стучишь в бубен. Получили мы доисторическую клиентскую базу Гедымина, еще на Yaffil-e. Внешне она не выглядела поврежденной: gfix не сообщал об ошибках, и архивирование-восстановление проходило без проблем. Но, в процессе апгрейда под Firebird 2.5, конвертер слетал напрочь.

Каких только действий не предпринималось. Перекомпилировали процедуры и триггеры, перерегистрировали внешние функции, перепробовали разные сборки серверов, удаляли подозрительные метаданные — все безрезультатно. Когда попробовали вручную перевести базу под Firebird 2.0, в процессе восстановления из архива наконец-то появилось более-менее осмысленное сообщение: "value exceeds the range for valid dates gds_$receive failed". Каким-то образом, поле типа дата содержало значение, которое Yaffil считал допустимым, а Firebird категорически отказывался принимать.

Предпринятая сходу попытка переприсвоить все поля типа дата запросами вида:
update gd_document set documentdate = documentdate
привела к уходу сервера "в себя". Стало ясно, что сначала надо определить проблемную таблицу, затем найти в ней нужные строки и работать с ними. С помощью запроса ниже был сформирован скрипт:
select
  'select max( ' || r.rdb$field_name || 
  ') from ' || r.rdb$relation_name || ';'
from
  rdb$relation_fields r
    join rdb$fields f on 
      f.rdb$field_name = r.rdb$field_source
where
  f.rdb$field_type = 13
order by
  r.rdb$relation_name
При его выполнении в IBExpert на таблицах с некорректными данными появляется сообщение "Invalid data cast". В нашем случае неверная дата находилась в поле documentdate где-то в таблице gd_document. Далее, с помощью прокрутки результата запроса:
select id, documentdate from gd_document order by id
выходим на запись, соседнюю с проблемной. Сама плохая запись не может быть прочитана — кидает ошибку. Убираем из запроса поле documentdate и определяем id нужной нам записи. Затем, или удаляем ее, или присваиваем полю корректное значение.

2 дек. 2010 г.

Лечение поврежденной БД под Firebird 2.0

От клиентов пришла поврежденная база. Сервер Firebird 2.0. Внешне все ОК: gbak и gfix проходят без проблем, но некоторые хранимые процедуры не перекомпилируются (ALTER PROCEDURE) и не удаляются с сообщением:

This operation is not defined for system tables.
unsuccessful metadata update.
cannot delete.
COLUMN RDB$220.
there are 1 dependencies.

Соответственно, невозможен процесс апгрейда базы с помощью утилиты FDBConvert.

Вылечить базу получилось следующим образом:
  1. Определили список поврежденных процедур
  2. Для каждой из них сохранили исходный текст
  3. Удалили параметры процедуры с помощью запроса
    DELETE FROM rdb$procedure_parameters WHERE rdb$procedure_name = 'name'
  4. Удалили процедуру (DROP PROCEDURE)
Теперь база готова к конвертации или к бэкапу/разбэкапу. После чего можно восстановить удаленные процедуры.

UPD: Конкретно в этой базе проблемы были с процедурами: MSG_P_GETCHILDCOUNT_BOX, MSG_P_EXPANDLIMIT_BOX, MSG_P_RESTRUCT_BOX.

25 мар. 2010 г.

Утилита FDBConvert доступна для скачивания

Быстрая и автоматическая конвертация баз данных Interbase 6.0, Yaffil, Firebird 1.x, Firebird 2.0.x, Firebird 2.1.x в формат сервера Firebird 2.5.

Бесплатная утилита с открытым исходным кодом.