Спасти TPS список из программы ...

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7384
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

Спасти TPS список из программы ...

Сообщение Игорь Столяров »

Привет всем !

Эпизодически возникают проблемы с TPS файлами, см. рисунок:
ошибка.jpg
Причины возникновения проблем - понятны. Лечим прогонкой списка через TPSFIX. Можно через командный BAT файл.
Вопрос в другом. Можно ли как-то TPS файлы с такими ошибками структуры восстанавливать из кода программы ?
Может быть есть какие-то скрытые функции в Clarion API ?

Из того, что видел в виде шаблонов - это различные манипуляции вокруг PACK() и Build(), что в данном случае
не помогает. Причем абсолютно. :)

Заранее спасибо за наводку, может быть кто-то видел реализацию такой "лечилки" TPS списков ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2331
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Спасти TPS список из программы ...

Сообщение Губин Игорь »

Если побиты только ключи, то проходим по файлу в порядке записей и пишем в отдельный файл. Если обратная ситуация, то проходим в порядке ключей. Если не помогает, то запускаем тпсфикс :idied:
Это я только кажусь дураком! На самом деле я полный идиот!
kreator
✯ Ветеран ✯
Сообщения: 4986
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз

Спасти TPS список из программы ...

Сообщение kreator »

SV пишет, что TPS - надёжная система, сама типа восстанавливается. Почитай раздел в хелпе "Repairing Data Corruption in TopSpeed/Clarion Files". Хотя, наверно это и не секрет. А вдруг?
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1703
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Спасти TPS список из программы ...

Сообщение gopstop2007 »

kreator писал(а): ... сама типа восстанавливается.
Хотелось бы чудодейственной регенерации TPS файла :idied: , но увы опять используя TpsFix...
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7384
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

Спасти TPS список из программы ...

Сообщение Игорь Столяров »

gopstop2007 писал(а): но увы опять используя TpsFix...
Да. Что-то вроде этого. В новый год принято ходить логическим путем. И мы пойдем.
TPSFIX может читать записи (блоки данных или что-то вроде этого) из коцнутого файла без GET и SET/NEXT.
Значит есть некое API которое содержит этот функционал. Вопрос в том как к нему подлезть.
Наверняка ведь как-то можно ....
За теми кто отстал - не возвращаться. (С) Кодекс
gopstop2007
✯ Ветеран ✯
Сообщения: 1703
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Спасти TPS список из программы ...

Сообщение gopstop2007 »

согласен, но SV считает tps "не убиваемыми" и они считают, что для этого tpsfix + command хватает... кстати когда то пробегали шаблоны tps repair и криков потребности чего то более не слышно :(
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7384
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

Спасти TPS список из программы ...

Сообщение Игорь Столяров »

gopstop2007 писал(а): шаблоны tps repair
Да, я написал об этом ... может быть есть еще, что-то ... но те что я видел - это просто Pack() & Build() списков.
Бесполезный прибамбас. Ключи, кстати, в TPS файлах летят действительно крайне редко.
А вот разрушить структуру файла достаточно просто. Например при записи по сети списка с достаточно большой
длиной записи меняем IP адрес сервера и инициируем таким образом обрыв сетевого подключения. Вероятность разрушения 50%.
Или вырубание компьютера при нескольких открытых списках на запись и записи в них информации. Вероятность разрушения до 10%.
И это без кэширования через Stream() ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7384
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

Спасти TPS список из программы ...

Сообщение Игорь Столяров »

Угу. Судя по всему современная наука ответ на этот детский вопрос не знает ... :idied:
За теми кто отстал - не возвращаться. (С) Кодекс
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Спасти TPS список из программы ...

Сообщение Shur »

Игорь Столяров писал(а): Например при записи по сети списка с достаточно большойдлиной записи меняем IP адрес сервера и инициируем таким образом обрыв сетевого подключения. Вероятность разрушения 50%.Или вырубание компьютера при нескольких открытых списках на запись и записи в них информации. Вероятность разрушения до 10%.
Игорь, прошу прощения, просто никогда не пользовался TPS промышленно по сети (поэтому и тема для меня как бы "непрочувствованная"), а используете вы у себя LOGOUT()...COMMIT? Или это не никак не влияет на порчу файлов данных?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7384
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

Спасти TPS список из программы ...

Сообщение Игорь Столяров »

Shur писал(а): а используете вы у себя LOGOUT()...COMMIT?
Да, конечно. На описанную ситуацию с разрушением структуры TPS файлов это никакого влияния не оказывает ...
Что в общем-то вполне ожидаемо - транзакция и ее откат - это несколько другое ...

Наверно надо сказать, что TPS структура достаточно надежна для файл-серверной БД, но хотелось бы конечно
иметь возможность разруливать возникающие проблемы из прикладной программы (например запуск с параметром /RECOVER) и т.д.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4625
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

Спасти TPS список из программы ...

Сообщение finsoftrz »

Игорь Столяров писал(а):
Shur писал(а): а используете вы у себя LOGOUT()...COMMIT?
Да, конечно. На описанную ситуацию с разрушением структуры TPS файлов это никакого влияния не оказывает ...
Что в общем-то вполне ожидаемо - транзакция и ее откат - это несколько другое ...

Наверно надо сказать, что TPS структура достаточно надежна для файл-серверной БД, но хотелось бы конечно
иметь возможность разруливать возникающие проблемы из прикладной программы (например запуск с параметром /RECOVER) и т.д.
Хм, у меня другая информация. Разрушению подвергаются tps-файлы при использовании logout/commit. Без них вроде и ломаться там нечему. Была как-то подробная статейка на эту тему. Проблему решаем просто - уход с файл-серверного режима на терминальный (при наличии tsplus даже не понимаю, нафига нужен файл-сервер) плюс лог, из которого можно накатить изменения на последнюю резервную копию базы данных и восстановить все на момент сбоя. На терминальном сервере можно тоже базу повредить, если жестко вырубить питание в самый неподходящий момент...
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7384
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

Спасти TPS список из программы ...

Сообщение Игорь Столяров »

finsoftrz писал(а): уход с файл-серверного режима на терминальный
Как я понимаю, у Вас это универсальная таблетка от всех проблем, включая быстродействие и разрушение списков. ;)
Полностью согласен. Но к сожалению - не всегда возможно реализовать технически ...
Что касается, LOGOUT / COMMIT - то как без них выполнять групповое изменение списков, если что-то в середине пойдет не так ?
Да, и как я написал ранее - списки валятся и отслеживанием транзакций и без них. Без них хуже - т.к. операция выполняется
значительно дольше и вероятность попасть на то же обрубание компьютера - значительно выше ... Просто математика, ничего личного. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2331
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Спасти TPS список из программы ...

Сообщение Губин Игорь »

Shur писал(а): просто никогда не пользовался TPS промышленно по сети
При использовании TPS в режиме файл-сервер возможны значительные тормоза при усиленном обращении к файлам.
Logout позволяет гарантировать, что, если пьяная уборщица выдернет провода, база будет нормальной, но в состоянии до logout.

Терминальный доступ, действительно, снимает массу проблем при работе с тпс по сети, проверено жизнью. Ну, или IPDRV
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2331
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Спасти TPS список из программы ...

Сообщение Губин Игорь »

finsoftrz писал(а): Разрушению подвергаются tps-файлы при использовании logout/commit
А в какой момент? Если только когда закрывается транзакция?
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7384
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 14 раз
Поблагодарили: 49 раз

Спасти TPS список из программы ...

Сообщение Игорь Столяров »

Губин Игорь писал(а): Ну, или IPDRV
А сабж существует для C10 в природе вообще и у нас в частности ? ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить