|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
Добрый день! Использую сервер firebird 2.5.9 embedded, пытаюсь разобраться с функционалом backup\restore на firebird .net провайдере (самый последний пакет из Nuget). Backup завёлся с пол-пинка с первого примера из интернета, а вот restore решил что так легко отдаваться без боя не с руки и вообще претит духу мира программирования и поэтому решил устроить мне немного боли и страданий в будничный вечер. В общем использую такой код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
И получаю такую ошибку Invalid metadata detected. Use -FIX_FSS_METADATA option. Среди доступных флагов для restore в исходниках клиента чего-то похожего не нахожу Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Да и судя по докам отсюда http://www.ibase.ru/gbak/ опция должна указывать кодировку и передаваться отдельно ПРИМЕР-fix_fss_metadata win1251 но это справедливо для gbak, а как воспользоваться ею для .net FbRestore ? И поддерживает ли вообще FbRestore этот функционал и лучше вообще на него забить и использовать gbak через Process.Start()? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2020, 14:55 |
|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
10.03.2020 14:55, whizzzkey пишет: > использовать gbak через Process.Start()? да Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2020, 15:02 |
|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
whizzzkey, зачем она тебе? Это опция используется исключительно 1 раз при переходе c Firebird версии < 2.1. Для регулярного b/r на 2.5 она не нужна ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2020, 15:11 |
|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
whizzzkeyно это справедливо для gbak, а как воспользоваться ею для .net FbRestore ? Никак. Эта опция при неправильном применении напрочь гробит базу, поэтому давать её в руки шарпеев нельзя. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2020, 15:12 |
|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
Там обрыв! Автору туда можно только после прохождения теста на профпригодность. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2020, 15:19 |
|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
whizzzkey, замечаний много. 1. не надо явно задавать размер страницы при ресторе, кроме тех случаев, когда его надо явно вручную (и один раз) увеличить или уменьшить. Более того, для любых современных баз, даже микроскопических, размер страницы 4к это мало. Норм - 8к. Для больших (10 гиг и выше) - 16к. Всё. Втыкание вот этого - restoreSvc.PageSize = 4096; - для базы с размером страницы 8к приведет к тому, что размер страницы станет 4к, вырастет глубина индексов, и т.д., и сразу будет заметен просад в производительности. Если же база совсем древняя, и у нее размер страницы 1-2к, то рестор на ФБ 2.5 автоматически повысит размер страницы до 4к. 2. Invalid metadata detected. Use -FIX_FSS_METADATA option. Это бывает, если взять базу с кривыми метаданными от предыдущей версии - 2.1, 2.0. Указанную опцию надо использовать ОДИН раз, руками. Причем, по уму, если обнаруживается invalid metadata detected, то надо (и более того, если речь идет об апгрейде клиентской БД с 2.1 на 2.5) - извлечь скрипт базы данных (isql -x) - прошерстить все метаданные скрипта на предмет "кривых символов", испорченного текста, и т.д. - подготовить скрипт с alter ... всех кривых объектов. - применить скрипт с alter, после чего проверить базу бэкап-рестором. Если ошибка invalid не выводится - значит всё замечательно. И у клиента тогда - применяем скрипт, делаем бэкап, меняем Фб на 2.5, делаем рестор. Да, как тут уже заметили, если два раза сделать рестор с -fix_fss_metadata, то тексту процедур и триггеров придет кабздец. Тут уже был один гражданин, который влепил эту опцию на постоянку, и у него мало того что тексты убились, так еще и они выросли в размере где-то раз в 10 (или 100, уже не помню). 3. .net - это, конечно, весело. Но геморрой. Я до сих пор не уверен, исправил Иржи дефолт для транзакции read committed (убрал no_rec_version) или нет. Кроме того, как передавать значения параметров такого типа - х.з., это надо у Иржи спрашивать. Ну и в любом случае использовать самый свежий драйвер .net. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2020, 15:47 |
|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
А ещё, если я правильно понимаю насчёт соответствия флагов gbak и синтаксиса работы с провайдером (о котором я ни уха ни рыла), улыбнуло и подвигнуло запастись попкороном вот это restoreSvc.Options = FbRestoreFlags.Create | FbRestoreFlags.Replace; Особенно в связи с фейлом рестора на первом же шаге. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2020, 19:11 |
|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, ага. Но тут человек строго соответствовал документации. Раз там написано -c | -r, значит надо писать FbRestoreFlags.Create | FbRestoreFlags.Replace. А то, что | в документации это "или" - пофиг. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2020, 20:31 |
|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
kdv, Премного благодарен за развёрнутый ответ, буду использовать gbak через Process.Start(). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2020, 00:53 |
|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, Старый плюшевый мишкаулыбнуло и подвигнуло запастись попкороном вот это restoreSvc.Options = FbRestoreFlags.Create | FbRestoreFlags.Replace; Очень рад что смог доставить вам положительную эмоцию в виде улыбки, у себя почему то вызвать улыбку этим моментом не получилось, потому что вот здесь по ссылке на исходники ADO .net провайдера на гитхабе вы сможете увидеть ровно ту же строчку кода, заимствованную мной Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Так как в официальных examples к ADO .net провайдеру нет примера как юзать Restore, то мне показалось разумным решением покопаться в исходниках и найти примеры использования FbRestore, к примеру в тестах, что я и сделал. Для меня не совсем очевидно использование флагов именно таким образом в тесте, хотя судя по документации: Код: html 1. 2. 3. 4. 5. 6.
должен использоваться либо первый либо второй. Может быть поделитесь ответом на этот счет? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2020, 01:14 |
|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
whizzzkey должен использоваться либо первый либо второй. Может быть поделитесь ответом на этот счет? Совет простой - забыть про -r вообще и навсегда. Эта экономия рано или поздно выйдет боком. Рабочий экземпляр базы всегда должен оставаться лежать где-то в сторонке. Иначе при любом сбое во время рестора станет мучительно больно за бесцельно прожитые годы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2020, 02:45 |
|
Как в .net FbRestore добавить опцию fix_fss_metadata ?
|
|||
---|---|---|---|
#18+
whizzzkeyМожет быть поделитесь ответом на этот счет? я замучился отвечать на этот вопрос, и поэтому описал ответ на него в http://www.ibase.ru/gbak#restore см. текст сразу после опций рестора. Вы же сами процитировали кусок моего текста, но видимо, дальше читать не стали. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2020, 09:53 |
|
|
start [/forum/topic.php?fid=40&msg=39936069&tid=1560418]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
129ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 255ms |
total: | 488ms |
0 / 0 |