Переход с Yaffil на Firebird 2.0.x
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) |
||
| (не показаны 8 промежуточных версий 2 участников) | |||
| Строка 1: | Строка 1: | ||
| − | + | '''См. [[Переход на Firebird 2.5]].''' | |
| − | Для перехода в ручном режиме вам понадобится свежая установка сервера [http://firebirdsql.org/index.php?op=files&id=engine Firebird 2.0.x] и утилита IBExpert. | + | <toggledisplay showtext="Остальная часть материала теперь уже устарела." hidetext="Скрыть"> |
| + | Основная проблема при миграции базы с сервера [[Yaffil]] на [[Firebird]] 2.0.х -- это отсутствие в последнем встроенных функций '''BIN_AND''' и '''BIN_OR''', широко используемых в триггерах и хранимых процедурах базы данных Гедымина. | ||
| + | |||
| + | Для перехода в ручном режиме вам понадобится свежая установка сервера [http://firebirdsql.org/index.php?op=files&id=engine Firebird 2.0.x] и утилита [http://ibexpert.net/ibe/index.php?n=Main.TrialVersion IBExpert]. | ||
| + | |||
| + | Последовательность действий: | ||
| + | |||
| + | # На всякий случай архивируем существующую БД. | ||
| + | # Деинсталируем Yaffil. Не забываем сохранить [[gudf.dll]] из подкаталога udf основного каталога размещения сервера Yaffil. | ||
| + | # Устанавливаем и запускаем сервер Firebird 2.0.5 (последняя доступная версия на момент написания статьи). | ||
| + | # Копируем библиотеку gudf.dll в подкаталог udf сервера Firebird. | ||
| + | # Устанавливаем IBExpert (если он еще не был установлен) | ||
| + | # Подключаемся к существующей базе с помощью IBExpert | ||
| + | # Регистрируем внешние функции с помощью команд: | ||
| + | |||
| + | DECLARE EXTERNAL FUNCTION bin_and | ||
| + | INTEGER, INTEGER | ||
| + | RETURNS INTEGER BY VALUE | ||
| + | ENTRY_POINT 'IB_UDF_bin_and' MODULE_NAME 'ib_udf' | ||
| + | |||
| + | DECLARE EXTERNAL FUNCTION bin_or | ||
| + | INTEGER, INTEGER | ||
| + | RETURNS INTEGER BY VALUE | ||
| + | ENTRY_POINT 'IB_UDF_bin_or' MODULE_NAME 'ib_udf' | ||
| + | |||
| + | # Не забываем делать COMMIT после каждой команды. | ||
| + | # В дереве объектов базы данных, используя меню по правой нопке мыши, выполняем команды '''Перекомпилировать процедуры''' и '''Перекомпилировать триггеры'''. | ||
| + | # Если в процессе перекомпиляции позникают ошибки, то вносим исправления в исходный код с помощью команд '''ALTER TRIGGER''' или '''ALTER PROCEDURE''' и повторно запускаем перекомпиляцию. Если вы не знаете как исправить ошибочный код триггера или процедуры, то временно можно закоментировать все команды между первым '''BEGIN''' и последним '''END'''. После окончания процесса миграции не забудьте вернуться, раскоментировать код и исправить все ошибки. | ||
| + | # Делаем архивную копию и восстанавливаем базу из архива. ВНИМАНИЕ! При восстановлении БД с установленным флагом Commit after each table могут возникать ошибки. В этом случае следует снять указанный флаг и повторить процедуру восстановления базы из архивной копии. | ||
| + | |||
| + | С серверной частью все. Остается на клиентских машинах: | ||
| + | |||
| + | # Найти все файлы gds32.dll и удалить их. | ||
| + | # С сервера, из подкаталога BIN основного каталога сервера Firebird берем gds32.dll и выкладываем рядом с gedemin.exe. | ||
| + | |||
| + | Запускаем. Проверяем работу. | ||
| + | </toggledisplay> | ||
| + | |||
| + | [[Category:Школа системного администратора]] | ||
Текущая версия на 17:40, 9 апреля 2010
UNIQ52759b897fc07b85-toggledisplay-00000000-QINU