Firebird и сервер терминалов
fort_el
Дата: 11.10.2005 09:37:57
Есть сервер Win 2003. На нем сервер терминалов, Firebird 1.5.2, и мой самописный сервис. Сервис представляет из себя SysLog Server, который ловит логи с маршрутизатора и после анализа вставляет в базу firebird. Сервис простенький, однопоточный, написанный стандартными средствами Delphi.
Управление сервером-машиной, осуществляется обычно через терминал. Подрубаюсь к машине и запускаю в терминальной сессии мой сервис. Все нормально. Сессию не закрываю, она остается в режиме ожидания. Подключаю клиента firebird (IBexpert) - все работает. Но через несколько дней при попытке снять отчет получаю чтото вроде (жаль не записал): "ошибка доступа к файлу *.fdb, ... не может быть открыт с разделяемой пользователем секцией" - или что-то подобное. Подключаешся к открытой терминальной сессии - перезапуск firebirda и моего сервиса - все опять нормально некоторое время. Но когда я перезапустил всю эту хрень прямо с машины сервака (а терминалка по моему была не закрыта) - у меня исчезли данные за полмесяца (с момента последнего подключения клиента). Так вот вопрос - это чей может быть трабл - firebirda или у меня сервис недоделаный? Сейчас терминалом в этих случаях вообще не пользуюсь - проблем нет. Но любопытство осталось.
Gold
Дата: 11.10.2005 11:35:03
Мы тоже через терминал на сервер ходим больше полугода, но проблем таких небыло, правда у нас FB2... Ты логи то червера читал? Может там что-то интересное есть?
kdv
Дата: 11.10.2005 11:44:13
скорее всего сервис тупо не работал пол-месяца. в терминале нельзя коннектиться к серверу через локальный протокол. надо localhost:c:\dir\data.gdb. И об этом уже 8 лет как написано в FAQ.
Gold
Дата: 11.10.2005 12:17:26
2 kdv: это исправлено в FB2, правда в случае .NET локальный протокол медленнее TCP.
fort_el
Дата: 11.10.2005 12:33:30
kdv |
скорее всего сервис тупо не работал пол-месяца. в терминале нельзя коннектиться к серверу через локальный протокол. надо localhost:c:\dir\data.gdb. И об этом уже 8 лет как написано в FAQ. |
Спасибо за ответ. Но:
В Faq я читал в т.ч и на Ibase.ru, про терминальный доступ не нашел. Ссылочку плиз!
Строка коннекта была: 127.0.0.1:c:\dir\data.gdb.
В сервисе предусмотрена запись в текстовой файл при отсутствии подключения к firebird. Файл пуст. В конце концов при возникновении таких ошибок в пр-е разы данные сохранялись. Потеря данных произошла при открытой терминальной сессии (в которой были стартованы firebird и сервис) и локальном входе того же пользователя на машину и остановкой сервиса уже локально (два логона одновременно).
Ошибка которая возникала - по сути аналог - "Процесс не может получить доступ к файлу *.fdb, так как файл занят другим процессом"
kdv
Дата: 11.10.2005 13:03:41
никаких спец. ссылочек нет, потому что терминальный доступ это грубо говоря несколько активных десктопов на одной тачке.
Если сервер FB не мог получить доступ к базе, значит на этой же машине уже был запущен другой сервер FB, который работал с БД. В общем, намутил ты сам, судя по всему.
fort_el
Дата: 11.10.2005 14:47:04
Намутил не намутил, а superserveru плодить процессы не резон. Все, вопрос снимается спасибо всем за информацию.
VF
Дата: 12.10.2005 07:11:27
хоть и снялся вопрос, но всё же...
а зачем оставлять терминальную сессию открытой?
вообще похоже на недоделанность сервиса, у меня поначалу тоже не хотел в БД данные нормально переносить, ошибка в организации занесения данных самим сервисом была, потом память жрал как голодный гиппопотам, потом отказывался работать если выйдешь из сеанса, всё это были ошибки в самом сервисе...