Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Евгений_О
Зарегистрирован: 06.07.2006 Сообщения: 4
|
Добавлено: Чт Июл 06 2006 16:49 Заголовок сообщения: Сервис не коннектится к FireBird через ODBC драйвер |
|
|
Господа доброго времени суток.
Может кто-нибудь сталкивался со следующей проблемой:
Есть консольное клиентское приложение под win.net на c#, которое прекрасно работает с FireBird 1.5.3 через Firebird ODBC Driver 1.2.0. Фрагмент Тестового приложение имеет вид:
static void Main(string[] args)
{
OdbcConnection autDealerConnection;
autDealerConnection = new OdbcConnection();
autDealerConnection.ConnectionString = "DSN=AutoDealerOdbc;Dbname=C:\\AutoDlr\\AutoDlr\\AutoDlr.gdb;CHARSET=NONE;Driver={Firebird/InterBase(r) driver};UID=SYSDBA";
try
{
autDealerConnection.Open();
}
catch (Exception e)
{
str = e.Message;
}
}
Требуется, что бы данное приложение запускалось как процесс службой Windows, либо тело main было встроено в службу (Служба реализует экспрорт данных из AutoDlr.gdb по таймеру). Попытки это сделать приводят к "ERROR [08004] unavailable database" в обоих случаях. Само по себе приложение, запущенное из под консоли, конектится к базе без проблем. Буду очень признателен, за подсказку. |
|
Вернуться к началу |
|
|
nvjtnbjknb
Зарегистрирован: 31.01.2005 Сообщения: 69
|
Добавлено: Пт Июл 07 2006 09:40 Заголовок сообщения: |
|
|
Скорее всего выше приложение стартует раньше самого сервера FireBird |
|
Вернуться к началу |
|
|
Евгений_О
Зарегистрирован: 06.07.2006 Сообщения: 4
|
Добавлено: Пт Июл 07 2006 10:25 Заголовок сообщения: |
|
|
nvjtnbjknb писал(а): | Скорее всего выше приложение стартует раньше самого сервера FireBird |
Спасибо, за ответ, но это происходит при гарантировано запущенном сервере. Я наверно слишком обще описал проблему. Я не могу приконектется FireBird в сервисе. Написав тестовое консольное приложение я с удивлением обнаружил, что когда его запускает сервис - я получаю тот же эффект - недоступную базу. То есть контекст запуска приложения (создания процесса) под консолью и под сервисом разные. Я эксперементировал с разными учетными записями для сервиса - эффект тот же. Я был бы очень признателен если бы кто-нибудь подсказал, как подменить контекст или правильно скофигурировать контекст сервиса, чтобы процесс созданный под сервисом (а еще лучше поток) могли коннектится через ODBC к FireBird. С уважением Евгений. |
|
Вернуться к началу |
|
|
subst
Зарегистрирован: 13.06.2005 Сообщения: 85 Откуда: s.Uinskoe
|
Добавлено: Ср Июл 12 2006 06:34 Заголовок сообщения: |
|
|
а как на счет параметра типа -user sysdba -password masterkey или того подобного? |
|
Вернуться к началу |
|
|
Евгений_О
Зарегистрирован: 06.07.2006 Сообщения: 4
|
Добавлено: Ср Июл 12 2006 12:08 Заголовок сообщения: |
|
|
Спасибо, но параметры user=sysdba и password=masterkey были заданы при настройки ODBC драйвера. На всякий случай, я сейчас добавил их в строку коннекта - эффект тот же. К сожалению такой эффект наблюдается только для FireBird. Сервис прекрасно работает с Oracle, MS SQL и древними настольными базами, использующими формат dbf через ODBC-драйвера. Я искал подобное в интернет и нашел нечто похожее, когда все работало по отдельности, но в сборе под PHP выдавало ту же ошибку. К сожалению, там все на немецком или голандском языке, которыми я не владею. Похоже это срабатывает вонючая зашита контекста от микрософт - сервис и консольное приложения работают в разных контекстах, и что может делать консоль запрещено сервису.
Я буду очень признателен, если мне кто-то подскажет, как сервис должен конектится firebird.
С уважением Евгений |
|
Вернуться к началу |
|
|
Евгений_О
Зарегистрирован: 06.07.2006 Сообщения: 4
|
Добавлено: Ср Июл 12 2006 15:13 Заголовок сообщения: |
|
|
Господа, еще одно маленькое дополнение, если у кого-то возникли подобные проблемы:
1. я получил полезную ссылку www.ibase.ru/ibfaq.htm#unavail, где есть полезная информация, но которая к сожалению не лечит мою проблему.
2. обнаружен еще один "глюк" - консольное приложение прекрасно работает, когда его запускает планировщик заданий Windows, до тех пор, пока пользователь остается активным, но если пользователь завершает сеанс, то немедленно возникает "ERROR [08004] unavailable database", хотя задание должно отрабатываться и при закрытом сеансе. С уважением Евгений - буду очень признателен за подсказки |
|
Вернуться к началу |
|
|
|