![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Доступ по к базе IB c использованием NamedPipe [D5, FB 1.5.1]
Карелин Артем © (2004-08-19 13:02:00)Как указать что база лежит на том же компе, что и программа?
Что должно стоять на компе для поддержки такого доступа к базе. //Должно работать на любых виндах после 95.
Digitman (2004-08-20 15:49:00) [1]
> Карелин Артем © (20.08.04 14:55) [26]
> Т.е. подозрение на UDF
нет, необязательно ... но и в том числе ..
AV, возникшие (при определенных условиях) в телах "кривых" UDF, приводят как правило к аварийному завершению процесса сервера , при котором, естественно, сервер закроет по своей инициативе все существующие активные коннекты к нему
гвардеец, отследив эту ситуацию, стартует процесс сервера вновь, что и наблюдается согласно логу ...
Карелин Артем (2004-08-20 14:55:00) [2]Digitman © (20.08.04 14:50) [25]
Т.е. подозрение на UDF...
Вообще исключить вызовы проблематично по причине их необходимости во время работы с базой и того факта, что эксперимент должен быть долгим. FB рушится то 3 раза в день, то раз в 3 недели. Определить конкретный источник не удается. Рушился даже во время бэкапа.
А можно поинтересоваться хотя бы беспочвенными подозрениями или случаями из личной практики?
Digitman (2004-08-20 14:50:00) [3]
> Карелин Артем © (20.08.04 14:07) [23]
все равно - под подозрением ..
нельзя ли как-то гарантированно исключить вызов ЛЮБЫХ UDF на время эксперимента по поиску источника проблемы ?
Карелин Артем (2004-08-20 14:13:00) [4]т.е. которые в ib_udf.sql и fbudf.sql прописаны.
Карелин Артем (2004-08-20 14:07:00) [5]Digitman © (20.08.04 14:00) [22]
Только стандартные.
Digitman (2004-08-20 14:00:00) [6]
> Карелин Артем
UDF используется в базе ?
Карелин Артем (2004-08-20 13:20:00) [7]В таком случае должен быть deadlock. А вот логи того, что было в реальности:
A (Client) Fri Jul 30 06:38:46 2004
Guardian starting: L:\Program Files\Firebird\bin\fbserver.exe
A (Client) Fri Jul 30 12:31:30 2004
INET/inet_error: read errno = 10054
A (Client) Fri Jul 30 12:31:30 2004
INET/inet_error: send errno = 10054
A (Client) Fri Jul 30 12:31:30 2004
INET/inet_error: send errno = 10054
A (Client) Fri Jul 30 12:31:30 2004
INET/inet_error: send errno = 10054
A (Client) Fri Jul 30 12:31:30 2004
L:\Program Files\Firebird\bin\fbserver.exe: terminated abnormally (3221225477)
A (Client) Fri Jul 30 12:31:31 2004
Guardian starting: L:\Program Files\Firebird\bin\fbserver.exe
}{ander (2004-08-19 17:29:00) [8]Несмотря на то, что вопрос закрыт, хотелось бы высказать еще одну маленькую реплика по поводу
This normally results from a loss of the connection on the remote socket due to a timeout or a reboot.
Только что проверил:
1. Создаем приложение с транзакцией Read Commited (read_committed|rec_version|nowait). В нем открываем датасет, меняем одно поле, делаем пост, на не делаем каммит транзакции оставляем приложение работать.
2. Создаем второе приложение – точно такое же, но в нем для транзакции устанавливаем режим Read-Only Table Stability (read|consistency). Делать оно должно то же самое, что и первое. Но!
3. При попытке второго приложения соединиться с сервером ничего не получается. Соединение происходит только тогда, когда первое приложение сделает каммит или роллбэк.
К чему я это все: возможно, у тебя происходит то же самое: из-за неправильно установленного уровня изоляции транзакций один из потоков просто не может законнектиться к базе. Он какое-то время ждет, а потом выдает эту самую ошибку о том, что превышено время ожидания.
Карелин Артем (2004-08-19 14:42:00) [9]Digitman © (19.08.04 14:41) [18]
Точку надо ставить...
Всем отвечавшим без исключения спасибо, вопрос закрыт.
Digitman (2004-08-19 14:41:00) [10]
> Карелин Артем © (19.08.04 14:34) [17]
> Трудно с тобой
сожалею
> Что подставить в строку коннекта на место LanManagerServerName
> если имя компа заранее неизвестно, но база с программой
> лежат на одном компе
имя данного компа
Карелин Артем (2004-08-19 14:34:00) [11]Digitman © (19.08.04 14:24) [16]
Трудно с тобой...
Что подставить в строку коннекта на место LanManagerServerName если имя компа заранее неизвестно, но база с программой лежат на одном компе.
Digitman (2004-08-19 14:24:00) [12]
> Карелин Артем © (19.08.04 13:23) [7]
> И как назвается аналог localhost в NamedPipe?
никак
NamedPipe-механика использует имена компов в соответствии с LanManager-механикой идентификации узлов, которая пересекается с DNS-механикой лишь на уровне WINS
Карелин Артем (2004-08-19 14:02:00) [13]Полд рукой нет лога, но точно помню что именно сетевая виндовая ошибка.
-SeM- (2004-08-19 13:59:00) [14]Карелин Артем © (19.08.04 13:44) [13]
Это чья ошибка (WSAECONNRESET - Error 10054) WinSock2? Он разве пишет в firebird.log?
У firebirdа есть свой код: 421 - connection lost to database
Карелин Артем (2004-08-19 13:44:00) [15]-SeM- (19.08.04 13:41) [12]
Есть точно такая же ошибка, но WSAECONNRESET - Error 10054
A connection was forcibly closed by a peer. This normally results from a loss of the connection on the remote socket due to a timeout or a reboot.
-SeM- (2004-08-19 13:41:00) [16]Открываю firebird.msg
Ошибка № 10054 - conversion error :)
Карелин Артем (2004-08-19 13:31:00) [17]-SeM- (19.08.04 13:28) [10]
Многопоточный доступ к базе надо. А через localhost:c:\1.fdbпочему-то рвется часто соединение и сервер перезагружается. В логах FB идет ошибка 10054.
-SeM- (2004-08-19 13:28:00) [18]Поддержка NetBEUI протокола. Сетевухи нет, модема нет. Начнем с начала?
Зачем для локального подключения к базе использовать сетевые протоколы?
}{ander (2004-08-19 13:28:00) [19]
> Карелин Артем © (19.08.04 13:10) [3]
> Как будет выглядеть строка подключения в случае, если база
> лежит на 'c:\1.fdb' и мы к ней ломимся через NamedPipe.
На счет NamedPipe не совсем уверен, но что мешает попробовать в строке коннектаlocalhost:c:\1.fdb
}{ander (2004-08-19 13:26:00) [20]
> Что должно стоять/быть разрешено в винде в таком случае?
>
WinSock2 (естественно, нужно установить и клиента IB?FB)