| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Firebird, Interbase > Перенос/миграция базы данных |
| Автор: Radekk 22.10.2013, 14:56 |
| В общем такая проблема, нужно перенести базу данных с сервера версии 2,0 на версию 2,5 Сделал бэкап имя_файла.fbk на рабоче сервере, из бэкапов восстановился локально на другой машине, версия 2,1, при восстановлении никаких проблем не возникло.(Ibexpert) Остановил работу сервера скопировал себе файлы баз данных имя_базы.fdb Перенес на другую машину(версия 2,5) подключился утилитой isql к файлу базы, сделал input "c:\Program Files\Firebird\Firebird_2_5\misc\upgrade\metadata\metadata_charset_create.sql" По инструкции начал проходить по базе уже select * from rdb$check_metadata Скрипт на каком то этапе выдал ошибку rdb$procedures rdb$procedure_source get_plan_details <null> statement faled, sqlstate=42000 malformed string -at procedure rdb$fixb_metadata line 86 col 17 at procedute rdb$check_metadata line 14 col 9 Последним он мне указывает процедуру где была ошибка? я правильно понял? Я вообще правильно базу переношу????? Потому как я понял при неправильном переносе очень велика вероятность повреждения базы. Если последовательность неверна прошу написать пряморукую последовательность. Хотелось бы восстановить базу без потерь. |
| Автор: Akella 22.10.2013, 15:38 |
нет зачем на 2.1? сразу под 2.5 восстанавливай Добавлено @ 15:44 На ПК, где установлен Firebird 2.5 сделай следующее: 1. Разверни (распакуй) встраиваемый сервер Firebird 2.0 в какой-нибудь папке. 2. В неё же скопируй файл базы BASE.FDB. 3. В этой же папке должно быть 2 файла: backup.bat и restore.bat 4. Вот содержимое первого: gbak.exe -b -v -user sysdba -password masterkey BASE.FDB BASE.FBK 5. Вот содержимое второго: "c:\program files (x86)\firebird\firebird_2_5\bin\gbak.exe" -c -v -rep -FIX_FSS_METADATA win1251 -user sysdba -password masterkey BASE.FBK BASE.FDB 6. Запусти вначале backup.bat - будет выполнено резервное копирование сервером Firebird 2.0. 7. Потом запусти restore.bat - будет выполнено восстановление сервером Firebird 2.5 Всё, теперь файл BASE.FDB у тебя должен нормально работать под FB 2.5 Обязательно прочитай внимательно про FIX_FSS_METADATA, т.к. там нужно кодировку правильную указывать. У тебя база в какой кодировке? |
| Автор: Radekk 22.10.2013, 16:26 | ||
это Firebird Embedded - предназначен для встраиваемых баз данных я правильно понял??? |
| Автор: Akella 22.10.2013, 21:30 | ||
|
| Автор: Radekk 23.10.2013, 11:35 |
| так по пункту 4. Вот содержимое первого: gbak.exe -b -v -user sysdba -password masterkey BASE.FDB BASE.FBK батник запускает командную строку но база не бекапится мне надо как то переименовывать файлик fbembed.dll???? восстановление прошло успешно одна база вроде как заработала у второй скрипт запускается и вылетает. я подозреваю проблема уже в кодировках посмотрел по таблицам второй базы почти везде указано unicode_fss получается для второго файла вместо вин1251 указывать юникод_фсс???? есть ли возможность как то узнать о кодировке самой базы данных? базы создавались еще во времена когда я здесь не работал еще вопрос можно при восстановлении привести базу просто к юникоду???? очень полезно было бы, потому что в базах хранятся данные на нескольких языках и уже в программном коде моих приложений приходится делать костыли, да и плюс я где то читал что лучше поиск по базе организован с диокритикой, я уже этот вопрос на форуме поднимал как то. в общем чтобы базы можно было перетащить на новую версию сервера с новыми плюшками Спасибо. |
| Автор: Akella 23.10.2013, 21:23 | ||||||
запомни раз и на всю жизнь: ВСЕГДА приводи полный, правильный, оригинальный текст ошибки Добавлено через 18 секунд и ооочень желательно не картинкой, а текстом Добавлено через 2 минуты и 16 секунд Попробуй переименовать в fbclient.dll Добавлено через 2 минуты и 56 секунд что-то не понял я тебя из чего же ты восстанавливаешь, если резервная копия не была создана Добавлено через 5 минут и 50 секунд
Ты это http://www.ibase.ru/firebird/21/metadata_charset.htm читал? Признавайся! Добавлено через 7 минут и 16 секунд а это видел? http://www.sql.ru/forum/903636/dlya-firebird-pod-windows-skript-dlya-zameny-servera-i-ods-bazy-fb-1-5-fb-2-5?mid=11771935#11771935 Добавлено через 8 минут и 15 секунд
вот тебе ответ http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=903636&msg=11965200 Добавлено через 9 минут и 33 секунды вот ещё http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=635265&msg=11969730 Добавлено через 10 минут и 17 секунд и здесь http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=635265&msg=11969763 важное замечание:
|
| Автор: Radekk 24.10.2013, 09:57 | ||
Батник запускается, появляется окно командной строки и тут же закрывается, ошибку выглядеть не успел... Если бы я видел ошибку, неужто я бы ее не расписал тут, зная что это будет очень нужно. Восстанавливаю из .fbk файлов, Ibexpert-ом сделал бэкапы на сервере, с переносом файлов был только геморрой, но это дело третье. Уже прочитал(http://www.ibase.ru/firebird/21/metadata_charset.htm) в батнике нужно будет добавить еще параметр так? "C:\Program Files\Firebird\Firebird_2_5\bin\gbak.exe" -c -v -rep -FIX_FSS_METADATA win1251 --replace win1251 utf-8 -user sysdba -password masterkey USERSrad.fbk users_local.fdb я правильно понял? Остальное сейчас перечитаю. Спасибо. |
| Автор: Akella 24.10.2013, 16:29 | ||
позови хоть кого-нибудь, кто умеет работать с командной строкой например, программиста позови, или сисадмина |
| Автор: Radekk 25.10.2013, 08:25 | ||||
Шутку оценил, смешно. Понял в чем суть ошибки, разобрался, бэкапы работают (мне чет взбрендило в башку что утилита просто запрятана где-то, стопорил батник, чтобы не закрывалась строка ошибок не было, уже когда зашел из строки в папку и попытался запустить бэкап, по ошибкам понял что эпично натупил). http://www.sql.ru/forum/903636/dlya-firebird-pod-windows-skript-dlya-zameny-servera-i-ods-bazy-fb-1-5-fb-2-5?mid=11965200#11965200 -скопировать fbembed.dll от 2.0 как fbclient.dll -скопировать gbak от 2.0 спасибо за помощь и терпение. Все как обычно выливается в RTFM, а я чет поторопился и был невнимателен. правда при бэкапе один раз потерял триггеры(когда бэкапился из IBexpert) при работе из командной строки все прошло хорошо, базы восстановил на 2.5 Database header page information: Flags 0 checsum 12345 page size 8192 ODS version 11.2 ... Вроде все нормально. Еще раз спасибо. |
| Автор: Akella 26.10.2013, 15:01 |
я не шучу, вообеще-то |
| Автор: Radekk 27.12.2013, 15:04 |
| Есть еще вопрос ALTER CHARACTER SET charset SET DEFAULT COLLATION collation пытаюсь применить к базе данных через isql утилиту и ничего не происходит, ошибок не выдает, однако база остается в прежней кодировке поля тоже. или в фениксе нельзя сменить тип кодировки и сравнение для созданных полей???? |
| Автор: Akella 30.12.2013, 13:11 | ||
а справку почитать пробовал? http://www.firebirdsql.org/refdocs/langrefupd25-ddl-charset.html
|
| Автор: Radekk 31.12.2013, 10:05 |
| Да ок я понял что будет работать только с полями которые я добавлю после, но почему из ibexpert меняется и кодировка и сравнение для созданных полей? Или он каким-то более хитрым способом это делает? С наступающим! Кстати еще вопрос, тут присоветовали Database .NET как альтернативу ibexpert, пользовались? что-то можете сказать? |
| Автор: Radekk 11.8.2014, 11:11 | ||
| в общем сделал чуть по-другому. перенес практически вручную метадату(процедуры,вьюшки и таблицы), а вот с данными нашел канал на ютубе от ибэкспертов, там очень быстро и четко все расписано. переносил ibeblock скриптами. пример, может будет кому-то полезно.
все скриптики сохранял в файлики с расширением sql и сделал батничек чтобы можно было переносить все сразу в батнике "C:\Program Files (x86)\HK-Software\IBExpert\ibescript.exe" Название_файла.sql "C:\Program Files (x86)\HK-Software\IBExpert\ibescript.exe" Название_файла.sql "C:\Program Files (x86)\HK-Software\IBExpert\ibescript.exe" Название_файла.sql "C:\Program Files (x86)\HK-Software\IBExpert\ibescript.exe" Название_файла.sql etc. порядок сделал исходя от ключей и зависимостей таблиц. вроде разобрался, просто был опыт работы только с mysql и чуток с mssql. возможно можно было и проще, но я не мытьем так катаньем, все работает. спасибо за помощь и понимание. |