powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Потеря соединения с сервером MS SQL
8 сообщений из 8, страница 1 из 1
Потеря соединения с сервером MS SQL
    #37785737
Valerii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ
Кто подскажет как правильно отлавливать ситуации когда была прервана связь между клиентским приложением и сервером? (обрыв соединения, проблемы с каналом и т.д.) Понятно что можно потом отлавливать результат какого-то процесса/операции и отлавливать ошибку. Как потом без выхода из приложения корректно восстанавливать соединение?
Какие есть техники на счет этого? Всем заранее спасибо.
...
Рейтинг: 0 / 0
Потеря соединения с сервером MS SQL
    #37785783
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriiНарод
Кто подскажет как правильно отлавливать ситуации когда была прервана связь между клиентским приложением и сервером? (обрыв соединения, проблемы с каналом и т.д.) Понятно что можно потом отлавливать результат какого-то процесса/операции и отлавливать ошибку. Как потом без выхода из приложения корректно восстанавливать соединение?
Какие есть техники на счет этого? Всем заранее спасибо.

1. Использовать свою ф-ию аналог SQLEXEC в которой сначала проверять "живость" соединения, если соединение отвалилось, то пересоединяться с получением нового hnd.

2. Использовать SQIDELDISCONNECT - ф-ия автоматически поднимающая упавшее соединение (только в 9-ке)
...
Рейтинг: 0 / 0
Потеря соединения с сервером MS SQL
    #37785922
Фотография Vladimir M Sklyar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> 2. Использовать SQIDELDISCONNECT - ф-ия автоматически поднимающая
> упавшее соединение (только в 9-ке)

SQLIDLEDISCONNECT :)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Потеря соединения с сервером MS SQL
    #37786122
Valerii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir M Sklyar,

СПасибо конечно, но я прочитал хелп по этой функции - она временно отключает и включает соединение.
Но она не проверяет есть коннект или его нет.
Или я что-то не так понял. Можно пример кода?
...
Рейтинг: 0 / 0
Потеря соединения с сервером MS SQL
    #37786808
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нельзя же быть настолько лентяем, что не попытаться воспользоваться поиском по слову SQLIDLEDISCONNECT на этом форуме. Затем по ссылкам в найденных топиках выйти вот на это SQLIDLEDISCONNECT( ) Temporarily Disconnects SQL Pass-Through Connections
...
Рейтинг: 0 / 0
Потеря соединения с сервером MS SQL
    #37787453
Valerii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо ВладимирМ,
Но дело не в лени а во времени...
Спс еще раз.
...
Рейтинг: 0 / 0
Потеря соединения с сервером MS SQL
    #37789573
Александр Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я делаю переподключение, возможно пригодиться кому-то код.
все зависит от логики приложения, у меня вызов хранимок.
сделал подмену стандатной SQLEXEC свою prSQLEXEC.


Код: sql
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
*************************************************************
*** prSQLEXEC процедура обертка на SQLEXEC
*************************************************************
PROCEDURE prSQLEXEC
PARAMETERS pnhConnect,pcSQL,pcCursor
*тут поставив PARAMETERS бо в низу є виклик  prg_connect а в ній використовую m.pnhConnect
*LPARAMETERS pnhConnect,pcSQL,pcCursor
*назад возвращаю lnresult, если он <0 то ошибка
*якщо выдбувся реконнект то мыняэться hConnect, бо передаю як адрес параметра
LOCAL lnresult
*	if _VFP.StartMode=0
IF PARAMETERS()=2
	m.pcCursor=''
ENDIF

*1-проверка связи, если нет то переподключаемся
IF m.pnhConnect>0
	m.lnresult=SQLEXEC(m.pnhConnect,"")
	IF m.lnresult<0
		*дістаємо стірчку підключення
		LOCAL lcConnStr
		m.lcConnStr=SQLGETPROP(m.pnhConnect,'ConnectString')
*!*			IF EMPTY(m.lcConnStr)
*!*					on shut
*!*					quit
*!*				RETURN -1
*!*			ENDIF
		m.pnhConnect=SQLSTRINGCONNECT(m.lcConnStr)
		IF m.pnhConnect < 0
			*не зміг підключитися викликаю вікно і чекаю 10секунд або якщо не натиснули так 
			*і повторно пробую підключитися, якщо праціник натиснув ні то вихід з програми
			LOCAL lcstr,lbok,lncmd
			m.lcstr="Не можу підключитись до сервера!"+CHR(13)+;
				"Автоматичне перепідключення відбудеться"+CHR(13)+;
				"через 10 секунд."+CHR(13)+;
				"Для перепідключення натисніть Да."+CHR(13)+;
				"Для виходу з программи натисніть Нет."
			m.lbok=.t.	
			DO WHILE m.lbok
				m.lncmd=MESSAGEBOX(m.lcstr,"Помилка зв'язку з сервером PostgreSQL!",68,10000)
				IF m.lncmd=-1 OR m.lncmd=6
					*перепідключення
					m.pnhConnect=SQLSTRINGCONNECT(m.lcConnStr)
					IF m.pnhConnect>=0
						m.lbok=.f.
					endif
				ELSE
					*lncmd=7 вихід
					on shut
					quit
				ENDIF
			ENDDO
	*		DO FORM mymessagebox WITH 'Помилка',m.lcTextLog,1
			*тут потрібно вияснити чому немає звязку и запропонувати Повтор, Вихід з Программи
	*		= MESSAGEBOX('Не можу підключитися до сервера, перевірте чи є у Вас мережа!', 16, 'Сервер')
	*		on shut
	*		quit
	*		return m.lnresult
		ENDIF
	ENDIF
	*звязок є, або відновлено
	m.lnresult=SQLEXEC(m.pnhConnect,m.pcSQL,m.pcCursor)
	=prg_connect(m.lnresult)
	*if (prg_connect(m.lnresult))
	*	return .f.
	*ENDIF
ELSE
	m.lnresult=-1
ENDIF
RETURN m.lnresult
ENDPROC
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Потеря соединения с сервером MS SQL
    #39002120
Valerii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Третьяков,

Спасибо за пример, вопрос:
*дістаємо стірчку підключення
LOCAL lcConnStr
m.lcConnStr=SQLGETPROP(m.pnhConnect,'ConnectString')

это строка "достает" из свойств сервера строку соединения которое отвалилось?
Можно это как-то прикрутить в обработчик ошибок? И потом пользоваться TRY... CATH? Или иcпользовать RETRY?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Потеря соединения с сервером MS SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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