|
|
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
Добрый день. субд MSSQL 2016 Суть проблемы заключается в том что программа зависает, если в компоненте TFDConnection стоит автоматическое восстановление связи при потере соединения (делая разные тесты "ноги растут" похоже от туда). Жалуются пользователи начиная с момента когда сделал переход с XE6 на DX10.2... сейчас уже стоит DX10.3.1 и проблема с зависаниями похоже не решается в лучшую сторону. 2 проблемы, посоветуйте что можно посмотреть... не могу отрицать, что в свойствах TFDConnection мог что-то упустить.. Код настройки автоматического переподключения: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Проблема 1-я: Полная потеря соединения. Провоцирую очень просто... выключаю mssql и на машине в локальной сети "кидаю" запрос.. далее очень длительное ожидание (2-ве, может больше, минут) до момента появления ошибки соединения (возможно так и должно быть.. тут маленький вопрос а можно уменьшить время ожидания?), не восстанавливая соединения с MSSQL закрываю программу, она как бы закрылась, но через диспетчер задач поток продолжает висеть в памяти. В логе виндовс что-то непонятное: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Поток программы не зависает если разъединения с БД не было, пробовал всякими средствами всегда корректное закрытие. Теперь 2-я проблема (думаю с первой есть взаимосвязь.) Провоцирую след. образом... выключаю mssql и на машине в локальной сети "кидаю" запрос, далее сразу включаю MSSQL... идёт корректное переподключение программа не сбоит и работает как надо... но в мониторе ресурсов mssql вижу лишний поток подключения с программой. До момента момента обрыва связи 2 пары, 1-я пара используется TFDConnection, 2-я пара используется TFDEventAlerter (использую для уведомлений со стороны MSSQL) а 3-я пара появляется "магическим" образом в момент переподключения. Далее выключаю программа... она как бы закрылась, но её поток весит в памяти... в жунале виндовс та же ошибка. Я делал тест немного по другому... выключил MSSQL и включил его, со стороны машины в сети запрос не кидал... в этом случае изначально идёт автоматическое соединение компонента TFDEventAlerter (вижу 1-ю пару в мониторе ресурсов mssql, переподключается автоматически), а вот подключение компонента TFDConnection происходит в момент если кинуть запрос на MSSQL через программу (вижу вторую пару подключения)... в этом случае третьей пары подключения нет и закрывая программу она выгружается без проблем, поток в памяти не весит. Попытался расписать очень подробно... может у кого есть идеи что можно посмотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2019, 12:03 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Пару дней "каверзных" тестов привели меня к тому, что не правильная работа автоматического соединения TFDConnection из за использования TFDEventAlerter. Что с этим делать вообще непонятно... такое ощущение что TFDEventAlerter создаёт свой собственный TFDConnection, который живёт в каком-то своём потоке, которым управлять не получается(( Победить правильную работу автоматического восстановления связи в случае "DX 10.3.1 + FireDAC + MSSQL" с использованием TFDEventAlerter - не получилось, механизм приводит к зависанию программы по её завершению (только если были обрывы связи с БД) при этом появляется лишнее соединение, которое видно в "мониторе активности" менеджмент студии (в случае восстановления связи после обрыва). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 15:08 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
06.08.2019 15:08, Игорь_UUS пишет: > Пару дней "каверзных" тестов привели меня к тому, что не правильная работа автоматического соединения TFDConnection из за использования TFDEventAlerter. не пользуй эту хрень Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 15:22 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 15:27 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
X-Cite https://quality.embarcadero.com/browse/RSP-24411 Оно? Пофиксили в 10.3.2 бррр.. а 10.3.2 уже вышла... или ещё тестируется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 16:00 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий06.08.2019 15:08, Игорь_UUS пишет: > Пару дней "каверзных" тестов привели меня к тому, что не правильная работа автоматического соединения TFDConnection из за использования TFDEventAlerter. не пользуй эту хрень Если не эта "хрень" то какая есть альтернатива? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 16:01 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
06.08.2019 16:01, Игорь_UUS пишет: > Если не эта "хрень" то какая есть альтернатива? IBX Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 16:09 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий06.08.2019 16:01, Игорь_UUS пишет: > Если не эта "хрень" то какая есть альтернатива? IBX )) InterBase не вариант... использую mssql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 16:12 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
Игорь_UUSX-Cite https://quality.embarcadero.com/browse/RSP-24411 Оно? Пофиксили в 10.3.2 бррр.. а 10.3.2 уже вышла... или ещё тестируется? Уже как две недели вышла.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 18:00 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
Поставил апдейтом 10.3.2 бага осталась, лучше не стало... вижу изменения в размерах bpl... вроде как обновилось При обновлении сис адми сказал, что были какие то ошибки, что то там не мог установиться какой то компонент, ошибок в итоге было пару десятков, но меня в известность он не поставил. Стоит пробовать полный снос и установку с нуля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 12:23 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
Игорь_UUSПоставил апдейтом 10.3.2 бага осталась, лучше не стало... вижу изменения в размерах bpl... вроде как обновилось При обновлении сис адми сказал, что были какие то ошибки, что то там не мог установиться какой то компонент, ошибок в итоге было пару десятков, но меня в известность он не поставил. Стоит пробовать полный снос и установку с нуля? Удаляете 10.3.1 затем ставите 10.3.2 Как по мне, из-за того что они меняют системные bpl, а версионирования нет, как в .Net то лучше все сносить, чистить реестр, папки, и ставить с нуля все. Я сначала все сделал с сохранением реестра, но получил кривизну в GetIt Delphi думала что пакеты стоят, хотя их нет. На это кстати и ругалась. В итоге в GetIt отображались оба компонента типа старый и новый... при чем старый типа установлен, а новый нет. И удалить старый нельзя и поставить новый нельзя. Да и где гарантия что адресация методов в системных bpl не изменилась, из-за чего могут потом всплыть баги при сборке проектов со сторонними либами. Поэтому я снес 10.3.2. со всеми приблудами (codesite express + interbase server) Почистил реестр тут и тут (удалил ветки) HKEY_CURRENT_USER\Software\Embarcadero\ HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Embarcadero\ Почистил папки со всеми bpl в c:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\ c:\Users\Public\Documents\Embarcadero\Studio\20.0\DCP\ c:\Users\Public\Documents\Embarcadero\Studio\20.0\CatalogRepository\ Перезагрузил комп Поставил свежую 10.3.2 и пересобрал все что требовалось для проектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 12:36 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
X-Cite, ещё заметил... если зайти в скомпиленный в 10.3.1 стоит "FireDAC = 17.0.0 (Build 93731)" и то же самое в 10.3.2 Вы можете посмотреть у себя, какая у Вас сборка фаердака?? буду очень признателен... я посмотрел через стандартную форму подключения к базе данных, на вкладке Info ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 12:38 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
FireDAC.Stan.Consts.pas Код: pascal 1. 2. Если сравнивать изменения в FireDAC.Phys.pas то поменялось примерно следующее... В TFDPhysEventThread.DoTimeout; TFDThread.Synchronize заменился на TFDThread.Queue А в TFDPhysEventAlerter.Register; и TFDPhysEventAlerter.Unregister; убрали TFDPhysConnection.Lock/Unlock Если у вас приложение без Link With Runtime, то вы можете этот файл подложить в проект и залогировать весь TFDEventAlerter и попытаться понять где же зависает... Подправить и использовать измененный или написать в QC, что не починилось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 13:39 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
X-Cite FireDAC.Stan.Consts.pas Код: pascal 1. 2. Если сравнивать изменения в FireDAC.Phys.pas то поменялось примерно следующее... В TFDPhysEventThread.DoTimeout; TFDThread.Synchronize заменился на TFDThread.Queue А в TFDPhysEventAlerter.Register; и TFDPhysEventAlerter.Unregister; убрали TFDPhysConnection.Lock/Unlock Если у вас приложение без Link With Runtime, то вы можете этот файл подложить в проект и залогировать весь TFDEventAlerter и попытаться понять где же зависает... Подправить и использовать измененный или написать в QC, что не починилось... сейчас у меня вот такой код: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. я так полагаю как раз последней версии? т.е. устанавливать с "0"-ля особого смысла нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 14:22 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
Игорь_UUS т.е. устанавливать с "0"-ля особого смысла нет? Это зависит от того, насколько вы перфекционист.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 14:27 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
X-CiteИгорь_UUS т.е. устанавливать с "0"-ля особого смысла нет? Это зависит от того, насколько вы перфекционист.. вот "блин" незадача... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 14:41 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
X-Cite, решил пойти по тяжёлому пути... удалим всё как вы сказали и поставим студию с "0"-ля... потом пересоберу все компоненты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 14:55 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
X-Cite, Добрый день. Всё поставили с "0"-ля... на мой взгляд ничего не поменялось, бага присутствует и в 10.3.2. Но Вы не поверите)) дело было в драйвере... на компе в сети стоял драйвер ms sql native client 10... поставил native client 11... всё стало работать как часики. И восстановление связи отрабатывает корректно и при закрытии программа не липнет в памяти (проверял несколько раз, все успешны). Могу предположить, что FireDAC работает немного по разному сравнивая "native client 10" и "native client 11" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2019, 10:30 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
Учитывая что у вас MSSQL 2016 не думаете поставить ODBC 13.0? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2019, 11:36 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
Игорь_UUSX-Cite, Но Вы не поверите)) дело было в драйвере... на компе в сети стоял драйвер ms sql native client 10... поставил native client 11... всё стало работать как часики. И восстановление связи отрабатывает корректно и при закрытии программа не липнет в памяти (проверял несколько раз, все успешны). Могу предположить, что FireDAC работает немного по разному сравнивая "native client 10" и "native client 11" Можно кстати запостить в QC... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2019, 11:37 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
X-CiteИгорь_UUSX-Cite, Но Вы не поверите)) дело было в драйвере... на компе в сети стоял драйвер ms sql native client 10... поставил native client 11... всё стало работать как часики. И восстановление связи отрабатывает корректно и при закрытии программа не липнет в памяти (проверял несколько раз, все успешны). Могу предположить, что FireDAC работает немного по разному сравнивая "native client 10" и "native client 11" Можно кстати запостить в QC... Я бы сказал нужно))) Но тут важна обязательная связка с TFDEventAlerter... без него всё работает корректно... и конечно же "native client 10" Скажите, зачем ODBC 13.0? Вообще говоря вроде как есть и 16-й и 17-й ODBC... а главное при установке MSSQL 2016 ставиться именно native client 11 и я его считаю как основной драйвер... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2019, 13:17 |
|
||
|
FireDAC на DX 10.3.1 + MSSQL2016 - зависание программы.
|
|||
|---|---|---|---|
|
#18+
Игорь_UUS, Да, я имел ввиду 17-ый.... Ну просто если использовать фишки которые появились только в 16 или 17, то SQLNCLI11 про них ничего не знает же... Но он универсальный и со стандартными возможностями справляется, не спорю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2019, 15:47 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39846295&tid=2039162]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 423ms |

| 0 / 0 |
