Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» InterBase и FireBird: вопросы по работе и их решение

Автор: keon
Дата сообщения: 12.06.2009 15:39

Цитата:
keon
слушай тогда однозначно у тебя версия сервера не 2.1 !!! Либо может клиент у тебя старый

Добавлено:
глянь вот Firebird 2.1 Release Notes
http://www.firebirdsql.org/rlsnotesh/rlsnotes210.html#rnfb210-mon


я даж все обновил
сервер - 2.1.2-18118
клиент - 6.3.2.18118 (IBExpert 2009/03/25)

упорно не видится ничего, настройки сервера дефолтовые
может необходимо в конфиге включить опцию какуюнить??
Автор: jonikDk
Дата сообщения: 12.06.2009 16:09
под клиентом я имел ввиду клиентскую библиотеку firebird или у тебя сервак на твоей машине ?
У меня Ibexpert еще от 2008 г и нормально все показывает. В эксплорере БД поставил галку показывать системные таблицы ??
Можешь еще через IBexpert попробовать посмотреть следующим образом.
В меню Сервис - Database Monitoring


Добавлено:
jonikDk
послушай может база у тебя от старых версий Firebird ??
Автор: keon
Дата сообщения: 12.06.2009 16:28

Цитата:
jonikDk
послушай может база у тебя от старых версий Firebird ??


хм...вполне возможно...а как можно произвести обновление базы с данными?
потому шо она уже в эксплуатации, так что нужно быть аккуратнее с ней

Проверил: создал новую базу на обновленном сервере - сервис мониторинга работает
пля, теперь надо думать как обновить старый файл с БД...
Автор: jonikDk
Дата сообщения: 12.06.2009 16:50
keon
вообщем советую создавать базу скриптом и затем данные заливать со старой базы. Для перезаливки данных можешь воспользоваться IBDataPump, может еще что то такое есть, я давно не переливал данные.
В начале потестируй заливку, засеки время сколько чего занимает. Потом прогу потестируй вдруг чего надо будет поправить, БД то будет уже обновленная. Ну и естественно сделай бэкап БД.
PS. Надеюсь не обидишься, просто на всякий случай пишу
Автор: X11
Дата сообщения: 12.06.2009 17:21
Можно сделать бэкап на старом сервере, затем рестор на новом сервере, затем выполнить этот скрипт для изменения метеданных
http://www.ibase.ru/firebird/21/metadata_charset.htm
Автор: and23
Дата сообщения: 12.06.2009 17:50
2keon: Для сервера 2.1 "родная" ODS - 11.1. Если версия ODS у Вас ниже, но сервер 2.1 - просто сделайте backup/restore (с опцией пересоздания). Ессно, пользователей надо на это время отрубить. Для базы в несколько гиг процедура займёт 10-15 мин.
А чарсет (см. пост X11) надо проверять _до_, а не _после_ b/r. Но с большой вероятностью это не понадобится.
Автор: keon
Дата сообщения: 15.06.2009 14:25
сам файл бд я обновил, теперь таблицы мониторигна доступны, всем спасибо ваши рекомендации помогли

но вот при опросе MON$CHARACTER_SET_ID всегда выдается 0, как из клиента до момента коннект (на который собственно и срабатывает триггер ON CONNECT) установить требуемый CHARACTER SET чтобы потом в триггере его проверить???
Автор: X11
Дата сообщения: 15.06.2009 14:55

Цитата:
установить требуемый CHARACTER SET

а ты при подключении разве не устанавливаешь?
Автор: and23
Дата сообщения: 15.06.2009 14:59
2keon: Подать его в параметрах коннекта? Типа такого:
Код: lc_ctype=WIN1251
user_name=SysDBA
password=masterke
Автор: keon
Дата сообщения: 16.06.2009 08:26

Цитата:
2keon: Подать его в параметрах коннекта? Типа такого:
Код:
lc_ctype=WIN1251
user_name=SysDBA
password=masterke


именно так и передаю кодировку в компоненте прописал, но при отработке триггера
другая кодировка:

select r.RDB$CHARACTER_SET_NAME
from MON$ATTACHMENTS m
join RDB$CHARACTER_SETS r on (r.RDB$CHARACTER_SET_ID=m.MON$CHARACTER_SET_ID)
into :C_TYPE;


insert into TABLE(C_TYPE) values(:C_TYPE);

но в таблице всегда будет NONE
Автор: Alexy780
Дата сообщения: 16.06.2009 13:06
Уважаемые, а вот не подскажете ли, как передавать Encription_password при использовании IBDAC и Interbase 2009 (которая, наконец-то, стала поддерживать шифрование файлов баз данных)?
Автор: and23
Дата сообщения: 16.06.2009 18:38
2keon: Проверил коннект в IBExpert'е - всё работает правильно: в Mon$Attachments.RDB$Character_Set_ID 0, если коннекчусь с NONE, 3 - если UNICODE_FSS, 52 - WIN1251 и т.д.
Какие компоненты используете?
Что показывает IBExpert в Mon$Attachments.RDB$Character_Set_ID, когда подключен Ваш клиент?
Автор: ZalivkoDenis
Дата сообщения: 16.06.2009 20:08
keon
Послухай дружище, тут тебе все советут, но, такое ощущение, что никто никогда не перекуливал базы в FB c верси, например, 1.5 в 2.1 Потому что, если бы пробовали, то знали, что конвертация обязательна не только базы пользователей, но и самих баз, созданных под более старыми версиями.
Для миграции 2.0 - 2.х достаточно только backup-restore. База данных восстановится с нужной ODS.
А вот для ранних миграций, , есть в папочке, в которую инсталится FB2.x есть misc\upgrade\metadata\ Так вот там файлики, которые тебе обязательно помогут. В частности, там есть .txt, в котором описана процедура апдейта чарсета БД (повторюсь - необходимая процедура при миграции с ранних версий).
Короч, если не получится и для тебя это всё ещё актуально, стукни в ПМ, я тебе скриптик дам (для удобства миграции в один скрипт засунул всё, что нужно для charset fix) после исполнения которого всё замечательно работает (предприятий на бслуживании масса, серверов море, а баз, соотвественно ещё больше - влом было по несколько раз одни и те же действия проводить, а новый FB2.1 очень хотелось. Уже правда FB2.1.2 стоит ). Вообще-то, фаербирдовцы могли и сами всё в один скрипт засунуть, но, видимо, решили, чтобы разрабы БД немного головой подумали ... Короче, если нуна -- пиши.
Удачи!
Автор: jonikDk
Дата сообщения: 16.06.2009 22:12
ZalivkoDenis

Цитата:
Послухай дружище, тут тебе все советут, но, такое ощущение, что никто никогда не перекуливал базы в FB c верси, например, 1.5 в 2.1

я предложил беспроигрышный вариант создать из скрипта и перезалить
Автор: ZalivkoDenis
Дата сообщения: 17.06.2009 08:59
jonikDk
Не хочется разводить флейм, но, то что ты советуешь -- не совсем модно И не такой уж это беспроигрышный вариант. Если база из 2-х таблиц -- всё отлично, перелить -- не проблема. А если в базе, скажем 500-600 таблиц, около 1500 процедур, связи и т.д. и т.п. Да ещё размер (данные) порядка 4-5 Гб... Пользоваться твоим способом? Зачем??? Если разработчики Firebird предлагают абсолютно нативное средство
Цитата:
Для перезаливки данных можешь воспользоваться IBDataPump, может еще что то такое есть, я давно не переливал данные.

Вот-вот, ключевое слово "может ещё что такое есть"... Не что-то такое, а, если пойти твоим путём, то нужно тогда не только скрипт на обновление метаданных, но и скрипт на добавление данных. С этим вполне замечательно справляется IBExpert (пункт "Инструменты->Извлечение метаданных"). Вот там можно выставить не только создание скриптов метаданных, но и извлечение данных. Кстати, BLOBs тоже извлекает . Единственное, на что нужно обратить внимание, так это на то, что для выполнения результирующего скрипта (скажем так, там туева хуча скриптов) необходимо наличие файлика IBEScript.exe (идёт в комплекте с сабжем)... Ну, это вкратце. Этим методом я пользовался, когда с юзерами (настройками прав на объекты) проблемосы были -- бывает так запутаешься, что не распутать -- приходилось всё ломать (имеется ввиду настройки безопасности). Вот тогда этот метод -- просто супер!
А для миграции -- пользуемся нативным методом от разрабов.
Автор: keon
Дата сообщения: 17.06.2009 15:48
and23

все разрулил, я теперь явно перед опеном прописал параметр

IBDatabase.Params.Add('lc_ctype=WIN1251');

и теперь MON$CHARACTER_SET_ID = 52
а когда было прописано в свойствах IBDatabase, он его не видел..

версию сервера и бд успешно обновил до версии 2.1.2, всем спасибо за участие и помощь!!!
Автор: jonikDk
Дата сообщения: 17.06.2009 15:49
ZalivkoDenis
ну можно же переливать нормально DataPump. Отключаются все ограничения и переливаются данные и затем включаются.
Согласен, что это годится когда данных не много. А кол-во таблиц тут не сильно играет роли.
Все заканчиваю флейм.
Автор: Kursist
Дата сообщения: 18.06.2009 18:02
Подскажите последовательность действий. Хочу попрактиковаться в работе с базами данных - опыт нет.

1. Скачал и проинсталлировал Firebird 2.1.1 Release
(http://www.ibprovider.com/rus/download_firebird.html)
2. Скачал и проинсталлировал InterBase/Firebird Development Studio
(http://www.sqlly.com/index.RU.html)
3. В IB/FB Development Studio создал базу данных MyFirst. (user: SYSDBA password: masterkey)
Создал таблицу Table1 с 2 полями: ID и Name.

4. Запустил CodeGear Delphi2007.
Как мне подключиться к этой базе данных? Какие компоненты использовать? (прочитал, что надо использовать компонетны из вкладки dbGo или dbExpress - что лучше и правильнее?)

5. Читаю инструкцию:
http://www.ibprovider.com/rus/documentation/firebird_interbase_delphi.html

* Создайте пустой файл с расширением .udl
* Откройте файл (Enter), появится связанный с данным расширением диалог для настройки подключения
* В списке OleDb провайдеров выберете IBProvider v3:

Создал пустой файл: myConnect.udl
Открыл файл. В списке OLE DB провайдеров такого провайдера нет (все от MicroSoft).
По дефолту выбрался MicroSoft OLE DB Provider for ODBC drivers
Автор: X11
Дата сообщения: 18.06.2009 18:34

Цитата:
2. Скачал и проинсталлировал InterBase/Firebird Development Studio

фи.. скачай лучше
IBExpert
он на русском и для жителей бывшего СНГ бесплатен

Добавлено:

Цитата:
Как мне подключиться к этой базе данных? Какие компоненты использовать? (прочитал, что надо использовать компонетны из вкладки dbGo или dbExpress - что лучше и правильнее?)

Двумя словами в одном сообщении не отделаться. Тебе прямая дорога на сайт sql.ru и ibase.ru, там много вкусного.

По идее есть стандартные компоненты в дельфи - IBX.
Но лучшие из лучших - это конечно же FibPlus. Не жалко денег и на лицензию. У FibPlus документация на русском. Есть примеры. www.devrace.com

И, само собой, что очень советую прочесть книгу Хеллен Бори.

dbGo или dbExpress не используй.

Информация, документация, статьи на русском по Firebird

И ещё. Снеси FB 2.1, поставь 2.5.

Добавлено:
Вот пример. Сырой, недоделанный, но всё же
Автор: Kursist
Дата сообщения: 18.06.2009 19:16
X11
Спасибо. Уже смотрю линки.

Пока только разбираюсь, поэтому не могу потратить деньги. Хочется потренироваться малой кровью на том, что уже есть и что бесплатно. Если создам что-то вразумительное, то смогу выбить деньги у начальства для покупки компонент, но это как минимум через месяца 3-4 после того, как я покажу, что создал базу данных с накладными.


И ещё. Снеси FB 2.1, поставь 2.5.
Я ориентировался на то, что указано 2.1 - последняя стабильная версия (релиз, а 2.5 - бета).
Или проблем нет?
Автор: vetal71
Дата сообщения: 18.06.2009 21:40
X11

Цитата:
Нужно лезть в системные таблицы. Но это очень опасно! Я когда-то на 2.0 изменял вычисляемое поле. Я найду информацию и выложу.

Добавлено:
Тынц

Спасибо. Сделал по аналогии с автосозданием и автоудалением поля. Все работает.
Автор: X11
Дата сообщения: 19.06.2009 10:13

Цитата:
Я ориентировался на то, что указано 2.1 - последняя стабильная версия (релиз, а 2.5 - бета).
Или проблем нет?

Думаю, что у тебя не настолько навороченное приложение. Пока напишешь программу, уже и 2.5 выпустят.
Автор: Kursist
Дата сообщения: 19.06.2009 11:37
X11
Да, тоже думаю, что приложение не навороченное

Зарегистрировался на www.ibase.ru описал свои действия, получил нагоняй (усмотрели рекламу) но дали ссылку, чтобы разобрался в выборе компонента доступа:

http://www.ibase.ru/devinfo/choosecomp.htm
http://www.ibase.ru/components.htm

Вот цитата:
IBX (InterBase Express) - входит в поставку Delphi
IBX 11.11 - в поставке Delphi 2007

Я правильно понял - компоненты IBX - это компоненты из вкладки InterBase (Смутила приставка Express - ведь есть компоненты dbExpress)?

Еще смущает момент: например, компонет TIBDataBase свойство DatabaseName... выбрать файл.. но если база будет не на клиентской машине, то как происходит подключение/нахождение файла базы?

Нужны информация и примеры для новичка для работы с компонентами InterBase.
Нашел, изучаю: http://www.ibase.ru/devinfo/ibx.htm
Автор: MagistrAnatol
Дата сообщения: 19.06.2009 11:58
народ,подскажите как застопить базу для ресторе?
код
AnsiString StopStr=CurDir+"\\gfix.exe –sh –user "+Baza->ConnectParams->UserName+" –pa "+Baza->ConnectParams->Password+" Amort";
if(0==spawnlp(P_WAIT,StopStr.c_str(),NULL))
....
не работает
или может у когото есть код как стопить базу?
Если я правильно понял gfix отрубает конекти к конкретной базе и не стопит весь сервер?

Добавлено:
spawnlp возвращает -1
data base file name (Цsh) already given - ето база застопилась?


Добавлено:
бекап-ресторе делаю через фибсы
Автор: X11
Дата сообщения: 19.06.2009 12:08

Цитата:
Я правильно понял - компоненты IBX - это компоненты из вкладки InterBase

ну да

Цитата:
если база будет не на клиентской машине, то как происходит подключение/нахождение файла базы?

comp_name:C:\MyProgram\Base\data_base.fdb
Имя и расширение файла никакого значения не имеют.

Добавлено:

Цитата:
Нужны информация и примеры для новичка для работы с компонентами InterBase.

1. А тот пример, что я дал, не подходит?
2. Неужели в поставке Delphi нет примеров для работы с IBX?
3. Неужели в гугле не найти примеров IBX + Firebird?
Автор: SIgor33
Дата сообщения: 19.06.2009 12:23
Kursist
IBDac от devart отличные компоненты
Автор: Kursist
Дата сообщения: 19.06.2009 12:33
X11

Цитата:
1. А тот пример, что я дал, не подходит?


Спасибо, извини, уже разбираюсь.
Автор: jonikDk
Дата сообщения: 19.06.2009 14:09

Цитата:
Еще смущает момент: например, компонет TIBDataBase свойство DatabaseName... выбрать файл.. но если база будет не на клиентской машине, то как происходит подключение/нахождение файла базы?


Также можно не указывать полный путь файл а в файле aliases.conf на сервере создать алиасы для баз данных и пользоваться алиасами, так удобней.
И строка подключения будет server:Имя алиаса
Автор: Kursist
Дата сообщения: 19.06.2009 15:47
jonikDk
Спасибо, это уже понятно.

Читаю: http://www.ibase.ru/devinfo/ibx.htm
Замена диалога запроса имени пользователя и пароля

...TDBLoginDialog... - а где такой компонет есть? Delphi его не распознает.
Также не нашел про TPasswordDlg (в инете аналогичный пример).
По хелпу нашел инфу про TLoginDialog и DBLogDlg Namespace - но моя Дельфи рагуется - не узнает такое.
Автор: X11
Дата сообщения: 19.06.2009 18:15
Свой нарисуй

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465

Предыдущая тема: Сравнение двух строк


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.