C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Соединение с MS SQL Server 2000, Помогите найти способ!
** Smile
Отправлено: 06.09.2005, 16:24


Не зарегистрирован







Кто-нибудь помогите, пожалуйста, найти способ проверки наличия соединения с SQL Server-ом через ADO компоненты в конкретный момент времени! Если вызывать метод Open(), допустим, компонента ADOQvery, то при наличии связи — это быстро, а при отсутствии — ожидание TimeOut-а, пока не выскачит исключение! Так долго ждать недопустимо! Может кто подскажет что-либо другое!!! Заранее благодарен!!!
** full_lamer
Отправлено: 06.09.2005, 16:58


Не зарегистрирован







У ADOConnection есть такое свойство Connected — если ошибаюсь — простите — уже более 3х месяцев Билдер не видел =( Соответственно этот компонент может быть источником связи для многих ADO-компонентов, значит проверив материнский — проверите и дочерние... имхо.

** Smile
Отправлено: 06.09.2005, 17:43


Не зарегистрирован







Дело в том, что это свойство (допустим, у компонента ADOConnection) показывает выполнено ли соединение после вызова метода Open(), но если после этого остановить SQL Server, а потом снова запустить, то это свойство так и останеться true, но связь уже не возобновиться до того момента, пока не выполните Close() + Open()!
Gedeon
Отправлено: 07.09.2005, 11:56


Ветеран

Группа: Модератор
Сообщений: 1742



У TADOConnection есть два свойства
TADOConnection::ConnectionTimeout
TADOConnection::CommandTimeout

ни о чем не говорит?

А проверять жив ли сервер в данный момент можно простой командой например
SELECT GETDATE()
** Smile
Отправлено: 07.09.2005, 12:31


Не зарегистрирован







ConnectionTimeOut — это конечно хорошо! Но для меня даже секунда — критично! Есть соображения, если свойство KeepConnection поставить в false, то ConnectionTimeOut не учитывается, и если соединения нет, то исключение происходит сразу. Иначе — ждет ConnectionTimeOut. Я правильно понимаю??? Чем грозит отказ от KeepConnection?
olegenty
Отправлено: 07.09.2005, 13:44


Ветеран

Группа: Модератор
Сообщений: 2412



отказ от KeepConnection грозит изменением SET-параметров, заданных для соединения вызовом команды SET. когда KeepConnection = false, реальный интерфейс ADOConnecton (тот, который COM-интерфейс), будет дропаться и подниматься заново. соответственно, и параметры соединения будут дропаться, и их также надо будет устанавливать заново.
Gedeon
Отправлено: 07.09.2005, 13:55


Ветеран

Группа: Модератор
Сообщений: 1742



>> Чем грозит отказ от KeepConnection?

Хэлп читайте
QUOTE

When KeepConnection is false a connection is dropped when there are no open datasets. Dropping a connection releases system resources allocated to the connection, but if a dataset is later opened that uses the database, the connection must be reestablished and initialized.


И вообще Вы никак не определите лег ли сервер если не выполняете какие-либо запросы к нему, так что через АДО самый быстрый интервал — секунда.
** Smile
Отправлено: 07.09.2005, 14:40


Не зарегистрирован







Спасибо всем за ответы, относительно понял! Буду искать другие способы!!!

Вернуться в Работа с базами данных в C++Builder