Страница 1 из 1

Как перенести пользователей из IB 5.5 в FB 1.5.2?

Добавлено: 03 авг 2005, 15:03
NT Man
Вообще возможно ли такое?
Если возможно, то опишите плиз технологию.
Заранее спасибо.

Добавлено: 03 авг 2005, 15:05
kdv
прочитай www.ibase.ru/devinfo/sqlroles.htm

в ib 5.x юзеры хранятся в isc4.gdb. в FB 1.5 - в securify.fdb. дальше сам разберешься.

Re: Как перенести пользователей из IB 5.5 в FB 1.5.2?

Добавлено: 03 авг 2005, 16:35
Merlin
NT Man писал(а):Вообще возможно ли такое?
Если возможно, то опишите плиз технологию.
Заранее спасибо.
База с юзерами - такая же база, как и любая другая. Правила миграции едины - бакап под старой версией, рестор под новой.

Добавлено: 03 авг 2005, 18:33
NT Man
Почти получилось :)
Забекапил IB gbak-ом потом восстановил FB gbak-ом и сунул куда нужно.
Через BDE Administrator к базе подключаюсь, а программа не работает :(

Наверное стоит рассказать из-за чего весь сыр бор. Сам я в своих проектах использую FB и диалект 3 и работаю через IBX. Всё бы хорошо, да вот в наследство досталась программа судя по всему написанная на Delphi (исходников нету), которая работает только с IB 5.5 через BDE используя 1 диалект. Естественно этот IB 5.5 для меня как бельмо на глазу. Хочу от него избавиться. При переносе базы проскакивали вот такие предупреждения:
gbak: WARNING: function STR_LENGTH is not defined
gbak: WARNING: module name or entrypoint could not be found
gbak: WARNING: function REPLACE is not defined
gbak: WARNING: module name or entrypoint could not be found
Думаю это не так страшно. И тем не менее меня она (программа) даже не пускает. Входить в неё надо не пользователем SYSDBA, а специфичным. Какие будут соображения?

Добавлено: 03 авг 2005, 19:56
kdv
это ты udf-ы с того сервера на новый не перенес. Программа, вполне может быть, сразу при логине лезет к ним.

Добавлено: 03 авг 2005, 20:42
Merlin
kdv писал(а):это ты udf-ы с того сервера на новый не перенес. Программа, вполне может быть, сразу при логине лезет к ним.
А я вот обиделся что не приводит точное сообщение и малчу :-D Ну задолбали, право слово. Сиди гадай - то ли он isс4 под этим же именем и ресторил и пытается подсунуть FB, то ли к базе у сервера прав доступа нет, то ли ещё чо...

Добавлено: 03 авг 2005, 22:59
NT Man
kdv писал(а):это ты udf-ы с того сервера на новый не перенес. Программа, вполне может быть, сразу при логине лезет к ним.
Точно в точку!!! Лоханулся я с UDF-ами :) Скопировал и всё пошло. Программа стала пускать пользователей.

На этом наверное тему следовало бы закрыть. Но теперь ещё больше хочется добить эту программу. Теперь уже при работе программы время от времени выскакивают следующие ошибки:

1)
Unsuccessful metadata update
MODIFY RDB$INDECESS failed
no permission for control access to TABLE RDB$ROLES

2)
BIndexedList.AddObject:Duplicate index value

Добавлено: 03 авг 2005, 23:01
NT Man
Merlin писал(а):А я вот обиделся...
Не обижайся уж с этим-то я разобрался :)

Добавлено: 05 авг 2005, 07:04
NT Man
Первую ошибку я победил.
Восстанавливать базу просто надо не из под пользователя SYSDBA, а из под пользователя, который работает с этой прграммой.

Как победить вторую ошибку? Может есть какой-нибудь отладчик?

Добавлено: 05 авг 2005, 10:01
kdv
отладчик чего - чужой программы без исходников?

Добавлено: 05 авг 2005, 10:13
NT Man
kdv писал(а):отладчик чего - чужой программы без исходников?
Отладчик, который бы ловил все сообщения об ошибках которые передаёт IB/FB сервер в клиентскую программу.

Добавлено: 05 авг 2005, 16:27
NT Man
Смотрел через BDE-шный SQL Monitor и вот что раскопал...
После запроса:

2595 18:02:40 SQL Execute: INTRBASE - select a.block_ext_id, a.col_id as col_no, a.row_no, a.ext_id as name, a.cell_type, a.data_type, a.max_length, a.required, NUM_PRECISION, RECALC_MODE, RECALC_CASCADE, KEEP_NOT_NULL,a.formula, b.dict_ext_id as dict_id,dict_id as fdict_id,b.Has_History as dict_History, a.dict_col,c.descr as unit_id, a.format_mask as format, a.default_value, a.high_value as max_value, a.low_value as min_value, a.border, a.mergecolumn, a.mergerow, a.align, a.valign, a.bold , a.italic, a.underline, a.font_size, a.wraptext, a.Master_Cell,a.descr, a.group_func, a.weight_cell from (stf_user_form_cells a left outer join stf_user_dictionary_names b on a.Block_Ext_Id = ? and a.form_id = ? and a.Vernum = ? and a.dict_id = b.id) left outer join stf_user_units c on a.unit_id = c.id


В ошибочном (FB 1.5.2) варианте после этого запроса выдаётся много данных вплодь по всплывания описанной ошибки. В рабочем варианте (IB 5.5) выдаётся всего 10 записей:


Ну теперь кто мне скажет почему этот запрос работает по разному?

Добавлено: 05 авг 2005, 23:19
NT Man
Хочу с радостью сообщить что понял в чём дело. Теперь расскажу обо всём по порядку. Для начала я проверил все вьюшки входящие в этот запрос. Здесь прошло всё чисто обе базы выдают одинаковые результаты. Далее вставил предполагаемый ошибочный запрос в SQL редактор и подставил вместо '?' значения из SQL лога. После выполнения передо мной предстала ясная картина. А именно в Firebird неработает вот это
a.Block_Ext_Id = ? and a.form_id = ? and a.Vernum = ?
(он это просто и нагло игнорирует) и ни скобки ни джойны тут не при чём. Ау где же вы девелоперы FB??? Отзовитесь!!! Почему не сделали возможность выборки на джойне как в IB??? Вобщем подправил запрос см. ниже и всё заработало.... Кхм.. т.е. результаты работы с обееми базами совпали. А в программу я это изменение внести немогу :(

Ещё раз молю разработчиков FB, чтоб в следующей версии они добавили такую функциональность в FB.
P.S. Спасибо всем кто мне помогал. А разработчикам FB ложим очередной камень в огород.

Добавлено: 07 авг 2005, 18:32
NT Man
Протестировал на совметимость с этим запросом все доступные IB совметимые сервера (InterBase 7.1, Firebird 1.5.2, Firebird 2 Alpha 3 и Yaffil 1.30.887) из претендентов тест прошёл только Interbase 7.1

Добавлено: 07 авг 2005, 19:33
dimitr
отставить кросспостинг. Тебя все равно везде читают одни и те же люди. Ответил на sql.ru.

Добавлено: 08 авг 2005, 10:39
kdv
я тебе отвечу, в чем дело - OldParameterOrdering в FB 1.5 включено?