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

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

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

SQLIDLEDISCONNECT :)

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

СПасибо конечно, но я прочитал хелп по этой функции - она временно отключает и включает соединение.
Но она не проверяет есть коннект или его нет.
Или я что-то не так понял. Можно пример кода?
...
Рейтинг: 0 / 0
09.05.2012, 13:56
    #37786808
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потеря соединения с сервером MS SQL
Нельзя же быть настолько лентяем, что не попытаться воспользоваться поиском по слову SQLIDLEDISCONNECT на этом форуме. Затем по ссылкам в найденных топиках выйти вот на это SQLIDLEDISCONNECT( ) Temporarily Disconnects SQL Pass-Through Connections
...
Рейтинг: 0 / 0
10.05.2012, 11:19
    #37787453
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потеря соединения с сервером MS SQL
Спасибо ВладимирМ,
Но дело не в лени а во времени...
Спс еще раз.
...
Рейтинг: 0 / 0
11.05.2012, 15:20
    #37789573
Александр Третьяков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потеря соединения с сервером MS SQL
я делаю переподключение, возможно пригодиться кому-то код.
все зависит от логики приложения, у меня вызов хранимок.
сделал подмену стандатной 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
Период между сообщениями больше года.
08.07.2015, 11:03
    #39002120
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Потеря соединения с сервером MS SQL
Александр Третьяков,

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

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


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