powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Как идентифицировать ошибку?
22 сообщений из 22, страница 1 из 1
Как идентифицировать ошибку?
    #711528
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В службе отлавливаю экспешены, среди прочего получаю:
[Microsoft][SQL Server Native Client 11.0]TCP Provider: Удаленный хост принудительно разорвал существующее подключение
Хотелось бы универсально (для разных языков, версий виндовс и версий sql клиента) обработать эту ошибку. Ничего похожего на ErrorCode нету.

У других ошибок коды есть, например
[Microsoft][SQL Server Native Client 11.0]Named Pipes Provider: Could not open a connection to SQL Server [53]
Причем это на этой же машине, одни ошибки английские, другие - русские.

У самого объекта Exception тоже ничего похожего нет. Что делать?
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #711534
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Просто Трёп [игнорируется] 
Подключение к БД через что? FireDac, ADO (=dbGo)?
...
Изменено: 27.01.2024, 17:16 - s62
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #711535
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62 [игнорируется] 
АДО.

Уже нашел на стэковерфлоу.
https://stackoverflow.com/questions/1457032/retrieving-ado-errors-using-delphi
...
Рейтинг: 1 / 0
Нравится: s62
Как идентифицировать ошибку?
    #711536
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щас вкорячу логирование всего этого, посмотрю, что дальше будет. Ошибка раз месяц вылезает.
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #711537
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Просто Трёп [игнорируется] 

А сама ошибка - это ошибка сокета с кодом 10054. Вот тут есть:
https://learn.microsoft.com/ru-ru/windows/win32/winsock/windows-sockets-error-codes-2
...
Рейтинг: 1 / 0
Нравится: Просто Трёп
Как идентифицировать ошибку?
    #711539
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, как грамотней реализовать логику вот такого:

Вот я в экспешене при попытке выполнения AODCommand отловил ошибку. Ошибка скорее всего лечится переподключением, но попытки повторного подключения тоже надо завернуть в try..except. Причем таких попыток желательно сделать пару-тройку раз с паузами, а потом уже окончательно закрываться.

При этом желательно не потерять все параметры ADOCommand, которую таки хочется выполнить. При этом процедура записи на SQL сервер вызывается UDP сервером и насколько часто, никто не знает. Все выполняется в одном (главном) потоке.
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #711541
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делать буфер для всего, что получает UDP сервер?
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #711542
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли смысл лепить что-то многопоточное?
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #711543
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Просто Трёп  27.01.2024, 17:41
[игнорируется]
Делать буфер для всего, что получает UDP сервер?
Кажется, это было бы нормально.

Т.е., например, как ты и написал, функция отправки возвращает булевский результат - при успешной отправке тру, неуспешной фолс. Причем неуспех ведь, наверное, теоретически говоря, может быть не только из-за разрыва соединения. При успешном выполнении процесс продолжается, при ошибке и если связи нет, то заданное кол-во раз пытается подключиться и отправить.
Очередь можно сделать на каком-нибудь Дженерик-контейнере, например:
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Generics.Collections.TQueue
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #711546
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Просто Трёп  27.01.2024, 17:46
[игнорируется]
Есть ли смысл лепить что-то многопоточное?
Я тут сталкивался с таким моментом. Если всё в одном потоке, то вот пока отправляешь и пытаешься отключиться, ход остального как бы приостанаавливается, пока это не выполнится, дальше не пойдет. Т.е. это синхронный вариант. Если в другом потоке, наверное по-разному может быть, но распространенный вариант - асинхронно, т.е. рабочий поток отправил данные в поток, коорый их отправляет в БД, а сам продолжает свою работу. И вот тут в зависимости от логики действий, может быть наверное когда как выгодней - синхронно или асинхронно.
...
Изменено: 27.01.2024, 18:01 - s62
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #711547
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Кстати "везде" пишут, что при использовании ADO у каждого потока должно быть свое подключение/соединение (AdoConnection).
...
Изменено: 27.01.2024, 17:57 - s62
Рейтинг: 1 / 0
Нравится: Просто Трёп
Как идентифицировать ошибку?
    #711558
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
s62  27.01.2024, 17:52
[игнорируется]
пока отправляешь и пытаешься отключиться
*подключиться
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #715412
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62  27.01.2024, 17:21
[игнорируется]
Просто Трёп [игнорируется] 

А сама ошибка - это ошибка сокета с кодом 10054. Вот тут есть:
https://learn.microsoft.com/ru-ru/windows/win32/winsock/windows-sockets-error-codes-2
Так и есть. Поймалась!
[2024-02-01 - 13:33:37] sql command execute failed [2024-02-01 - 13:33:37] [Microsoft][SQL Server Native Client 11.0]TCP Provider: Удаленный хост принудительно разорвал существующее подключение [2024-02-01 - 13:33:37] ---------------------------------------------------------------------------------- [2024-02-01 - 13:33:37] Error details: [2024-02-01 - 13:33:37] Source:Microsoft OLE DB Provider for ODBC Drivers [2024-02-01 - 13:33:37] Number:-2147467259 [2024-02-01 - 13:33:37] Description:[Microsoft][SQL Server Native Client 11.0]Communication link failure [2024-02-01 - 13:33:37] SQLState:08S01 [2024-02-01 - 13:33:37] NateveError:10054
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #715454
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Просто Трёп  02.02.2024, 09:06
[игнорируется]
s62  27.01.2024, 17:21
[игнорируется]
Просто Трёп [игнорируется] 

А сама ошибка - это ошибка сокета с кодом 10054. Вот тут есть:
https://learn.microsoft.com/ru-ru/windows/win32/winsock/windows-sockets-error-codes-2
Так и есть. Поймалась!
[2024-02-01 - 13:33:37] sql command execute failed [2024-02-01 - 13:33:37] [Microsoft][SQL Server Native Client 11.0]TCP Provider: Удаленный хост принудительно разорвал существующее подключение [2024-02-01 - 13:33:37] ---------------------------------------------------------------------------------- [2024-02-01 - 13:33:37] Error details: [2024-02-01 - 13:33:37] Source:Microsoft OLE DB Provider for ODBC Drivers [2024-02-01 - 13:33:37] Number:-2147467259 [2024-02-01 - 13:33:37] Description:[Microsoft][SQL Server Native Client 11.0]Communication link failure [2024-02-01 - 13:33:37] SQLState:08S01 [2024-02-01 - 13:33:37] NateveError:10054
Этот лог, это ты выводишь?
Опечатка в NateveError
...
Изменено: 02.02.2024, 10:24 - Неуловимый Джо
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #715456
Неуловимый Джо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Я ничем не помог, так хоть опечатку заметил :)
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #715482
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага. Очепятался.
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #715594
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Просто Трёп [игнорируется] 
Вопрос, почему принудительно разрывается соединение со стороны сервера. В пояснении к ошибке приводятся разные варианты.Там может быть, как я понимаю, от банальной перезагрузки компьютера до того, если не ошибаюсь, что SQL Server (в пояснении к ошибке сокета говорится о приложении на удаленном хосте, в данном случае - это как раз SQL Server) по каким-то причинам закрывает соединение с данным клиентом и другие варианты.
...
Изменено: 02.02.2024, 12:51 - s62
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #715606
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62  02.02.2024, 12:49
[игнорируется]
Просто Трёп [игнорируется] 
Вопрос, почему принудительно разрывается соединение со стороны сервера. В пояснении к ошибке приводятся разные варианты.Там может быть, как я понимаю, от банальной перезагрузки компьютера до того, если не ошибаюсь, что SQL Server (в пояснении к ошибке сокета говорится о приложении на удаленном хосте, в данном случае - это как раз SQL Server) по каким-то причинам закрывает соединение с данным клиентом и другие варианты.
Причина пока не ясна. Пока у меня три ошибки.
[2024-01-15 - 13:10:27] [Microsoft][SQL Server Native Client 11.0]TCP Provider: Удаленный хост принудительно разорвал существующее подключение [2024-01-17 - 18:38:56] [Microsoft][SQL Server Native Client 11.0]TCP Provider: Удаленный хост принудительно разорвал существующее подключение [2024-02-01 - 13:33:37] [Microsoft][SQL Server Native Client 11.0]TCP Provider: Удаленный хост принудительно разорвал существующее подключение
Чаще, чем я думал. Предыдущие ошибки были на другую тему. Заметил, что постоянно открытая менеджмент студия, подключенная к этому серверу, тоже теряет коннект примерно в это время. Сервак не перегружается.
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #715632
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Просто Трёп  02.02.2024, 13:14
[игнорируется]
Заметил, что постоянно открытая менеджмент студия, подключенная к этому серверу, тоже теряет коннект примерно в это время. Сервак не перегружается.
Значит вероятно дело в MS SQL сервере. Не знаю, может у него есть свой лог приложения (сервера) и там что-то можно посмотреть? Но как вариант, если чаще не станет, можно просто обрабатывать ошибку в своем приложении.
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #715637
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
s62 
Участник
Почему-то решил, что студия - на сервере. Если она удаленная, то конечно дело может быть и не в MS SQL сервере, а в чем-то другом, в чем-то связанном с сетевым подключением к нему.
...
Изменено: 02.02.2024, 13:41 - s62
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #715641
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, не на сервере. Сеть тоже может быть виновата.
...
Рейтинг: 0 / 0
Как идентифицировать ошибку?
    #715674
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
[заблокирован: 21 час. 52 мин.]
Просто Трёп  02.02.2024, 13:14
[игнорируется]
s62  02.02.2024, 12:49
[игнорируется]
Просто Трёп [игнорируется] 
Вопрос, почему принудительно разрывается соединение со стороны сервера. В пояснении к ошибке приводятся разные варианты.Там может быть, как я понимаю, от банальной перезагрузки компьютера до того, если не ошибаюсь, что SQL Server (в пояснении к ошибке сокета говорится о приложении на удаленном хосте, в данном случае - это как раз SQL Server) по каким-то причинам закрывает соединение с данным клиентом и другие варианты.
Причина пока не ясна. Пока у меня три ошибки.
[2024-01-15 - 13:10:27] [Microsoft][SQL Server Native Client 11.0]TCP Provider: Удаленный хост принудительно разорвал существующее подключение [2024-01-17 - 18:38:56] [Microsoft][SQL Server Native Client 11.0]TCP Provider: Удаленный хост принудительно разорвал существующее подключение [2024-02-01 - 13:33:37] [Microsoft][SQL Server Native Client 11.0]TCP Provider: Удаленный хост принудительно разорвал существующее подключение
Чаще, чем я думал. Предыдущие ошибки были на другую тему. Заметил, что постоянно открытая менеджмент студия, подключенная к этому серверу, тоже теряет коннект примерно в это время. Сервак не перегружается.
настройки сервера и Скуль-сервера хоста смотрел?
...
дед-пердед
Изменено: 02.02.2024, 14:25 - Гарыныч
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Как идентифицировать ошибку?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (2): erbol, папа акуз
Читали форум (6): Анонимы (6)
Пользователи онлайн (161): Анонимы (147), basename, Буся, Гарыныч, anonymous, Biene Maja, Bing Bot, Yandex Bot, Green, Ветер 1 мин., С чистого листа 2 мин., Брюквенные годы 5 мин., YesSql 6 мин., Неуловимый Джо 8 мин., s62 8 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]