
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
06.05.2018, 21:41
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
Добрых суток. Такая ситуация. Использую IBX D7 + FireBird2.5. В течении суток программа теряет соединение с БД (на сервере). И при попытке выполнить запрос к ней возникает исключение, основанное на отсутствие этого самого соединения. Я понимаю что можно сделать запрос и каждый раз им проверят подключение к БД и в случае исключения переподключать БД. Может есть более красивый способ? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.05.2018, 22:01
|
|||
|---|---|---|---|
|
|||
Как отследить потерю соединения с БД? |
|||
|
#18+
FIL23> Может есть более красивый способ? Совсем красивого идеального нет, потому что не может быть. Но подсмотреть можно хотя бы в тех же FIBPlus - там есть события OnLostConnect, *RestoreConnect и пр. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.05.2018, 22:03
|
|||
|---|---|---|---|
|
|||
Как отследить потерю соединения с БД? |
|||
|
#18+
Хотя и они не панацея и перехватывать (и обрабатывать) ошибку потери соединения (и не только её) при всех обращениях к БД придётся всё равно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.05.2018, 22:07
|
|||
|---|---|---|---|
|
|||
Как отследить потерю соединения с БД? |
|||
|
#18+
FIL23Может есть более красивый способ? Есть более правильный: найти почему программа теряет соединение и устранить причину этого ненормального явления. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.05.2018, 22:23
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
FIL23Добрых суток. Такая ситуация. Использую IBX D7 + FireBird2.5. В течении суток программа теряет соединение с БД (на сервере). И при попытке выполнить запрос к ней возникает исключение, основанное на отсутствие этого самого соединения. Я понимаю что можно сделать запрос и каждый раз им проверят подключение к БД и в случае исключения переподключать БД. Может есть более красивый способ? Спасибо. А зачем тебе? Ну, узнаешь ты не в момент запроса. И? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.05.2018, 23:33
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
Сделай компонент, который будет проверять и восстанавливать соединение перед каждым запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.05.2018, 23:52
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
rgreatСделай компонент, который будет проверять и восстанавливать соединение перед каждым запросом. Т.е., каждый запрос в отдельной транзакции? Или контекст транзакции тоже восстанавливать, чудесным образом? И как это - "восстанавливать соединение", если физически нет связи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 00:59
|
|||
|---|---|---|---|
|
|||
Как отследить потерю соединения с БД? |
|||
|
#18+
Как, как... Компонентом! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 08:53
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
Можно просто свою простейшую функцию-обертку типа OpenQuery(Query: TIBQuery), которая будет пытаться открывать переданый ей запрос и в случае неудачи, при получении исключения соотв вида (о потере соединения) переоткрывать связанную с Query TIBDatabase, стартовать транзакцию и в случае успеха повторять запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 09:33
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
чаще всего, это все равно дохлый номер если программа сделана на классическом RAD подходе, то у вас 100% есть еще 100500 открытых датасетов, которые тоже закрылись при потере коннекта и теперь их надо переоткрывать в этом случае единственный вариант "с гарантией" - выйти/войти либо продумывать архитектуру на других принципах, без открытых датасетов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 09:34
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
А почему не хотите использовать концепцию соединения по требованию? Открыли соединение, получили данные, закрыли соединение. Зачем постоянно держать соединение открытым? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 09:37
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
Dimitry SibiryakovЕсть более правильный: найти почему программа теряет соединение и устранить причину этого Если какое-то время программа не проявляет активности, то маршрутизаторы или брандмауэры просто закрывают соединение. А доступа к маршрутизатору(ам) может и не быть. Как вариант, периодически выполнять какой-нибудь "пустой" запрос у Firebird. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 09:38
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
соединение долго устанавливается. не дело это ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 09:38
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
Arm79Зачем постоянно держать соединение открытым? время... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 09:39
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
krapotkinсоединение долго устанавливается. не дело это Долго устанавливается для Firebird? Драйвера не реализуют пулинг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 09:41
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
чччДrgreatСделай компонент, который будет проверять и восстанавливать соединение перед каждым запросом. Т.е., каждый запрос в отдельной транзакции? Или контекст транзакции тоже восстанавливать, чудесным образом? И как это - "восстанавливать соединение", если физически нет связи?Если у тебя транзакции - то обработка ошибок в любом случае нужна в более сложная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 10:37
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
читаем про обработку EIBError. Диагностировать потерю соединения можно только выполнив запрос к базе. Но дополнительный (фейковый) запрос, который предназначен для того, чтобы диагностировать потерю, не нужен, т.к. любой запрос выполняет эту проверку. Программы бывают разные. Если программа создаётся для работы 24 часа 7 дней в неделю, то вариант перезайти не прокатит, т.к. некому просто эту программу вовремя запустить (при появлении коннекта с базой). В этом случае программа должна корректно закрыть открытые запросы и не инициировать новых до восстановления соединения. ЗЫ: В FIBах имеется спец. событие OnLostConnect(Database: TFIBDatabase; E: EFIBError; var Actions: TOnLostConnectActions; var DoRaise: Boolean) и режим laWaitRestore. Это на случай, если решите перейти на FIB+ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 11:04
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
Однако сам автор вопроса, походу сразу же потерял к нему интерес.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.05.2018, 11:23
|
|||
|---|---|---|---|
Как отследить потерю соединения с БД? |
|||
|
#18+
krapotkinесли программа сделана на классическом RAD подходе, то у вас 100% есть еще 100500 открытых датасетовсмотря что считать "классическим" в многозвенке (хоть бы том же классическом мидасе) клиент вполне переживет и разрыв соединения апсервера с бд и самого апсервера и/или бд перезапуск. и никакой тучи "открытых" датасетов именно к базе, хотя клиентские вполне себе активны krapotkinлибо продумывать архитектуру на других принципах, без открытых датасетовили гранаты датасеты другой системы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2040924]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 455ms |

| 0 / 0 |
