Страница 1 из 1

"Взаимодействие с рабочим столом" в сервисе

Добавлено: 09 апр 2006, 20:19
MMF
Пишу сервис NT, проблема в следующем: пока в сервисе работает один поток, использующий соединение с Fb, сервис нормально работает под системной учетной записью со снятым флажком "Разрешить взаимодействие с рабочим столом". При создании в сервисе дополнительных потоков, последние выдают ошибку "unavailable database' при попытке TIBdataBase.open (IBX), если флажка нет. При его установке (и прочих условиях запуска) ошибка не возникает.
Подскажите, пожалуйста, причина в кривизне моего кода или это нормальное явление?

Добавлено: 09 апр 2006, 20:27
MMF
FB 1.5.3.4854
Используется соединение по TCP/IP. Файл базы данных 100% существует, сервер запущен, логин корректный, проверяю по логу
LogMessage('Открытие БД: ' + FIBDataBase.DatabaseName, EVENTLOG_INFORMATION_TYPE);
LogMessage(FIBDataBase.Params.Text, EVENTLOG_INFORMATION_TYPE);
FIBDataBase.Open();

Re: "Взаимодействие с рабочим столом" в сервисе

Добавлено: 09 апр 2006, 23:25
hvlad
MMF писал(а):Подскажите, пожалуйста, причина в кривизне моего кода или это нормальное явление?
Скорее первое, увы :wink:

Re: "Взаимодействие с рабочим столом" в сервисе

Добавлено: 10 апр 2006, 00:59
MMF
hvlad писал(а):Скорее первое, увы :wink:
Спасибо, диагноз подтвердился - изваял простенький трехпоточный сервис. Работает без взаимодействия с рабочим столом. Хорошо, конечно, что ФБ не виноват, только как баг найти - не ведаю.

Добавлено: 10 апр 2006, 01:26
kdv
читай faq и не используй локальный коннект.

Добавлено: 10 апр 2006, 23:58
MMF
kdv писал(а):читай faq и не используй локальный коннект.
Какой, прости, Faq читать?
По поводу локального коннекта я указал: "Используется соединение по TCP/IP".

Добавлено: 11 апр 2006, 08:32
kdv
такой - www.ibase.ru/ibfaq.htm

коннект по tcp не может выдать "unavailable database". Такое сообщение выдает локальный коннект.
Используется соединение по TCP/IP.
так многие пишут. Только когда просишь привести строку коннекта, оказывается, что соединение было нифига не tcp.

в дополнительных тредах идет обращение к БД? Они делают это каждый в своем IBDatabase? Если нет, то они принудительно синхронизируются?

p.s. я почему и спрашиваю - FAQ читал? :)