2015-10-23 3 views
0

Я проверяю состояние соединения SQL как:Проверка состояния соединения SQL в ADO

_ConnectionPtr   m_pADOConnection; 

// Connection is created and working fine... 

// Now I disable network adapter (from Control panel) 

if((pApp->m_pConnection->GetState() == adStateOpen) ) 
{ 
    // I got here every time.... 
} 

Проблема заключается в том, я получаю каждый раз adStateOpen даже если соединение действительно не работает!

При попытке выполнить запрос или сделать что-либо он терпит неудачу, в основном с

SMUX Provider: Физическое соединение не может использоваться [xFFFFFFFF].

или

Номер ошибки: 80004005 = Не удалось открыть логический сеанс

Является ли это значение государственной собственности надежной, или мне нужно выполнять некоторые другие проверки сверху обнаружить это состояние?

ответ

0

Состояние собственности не становится 0 (adStateClosed), когда соединение прерывается. Поэтому проверка состояния соединения всегда будет возвращать 1 (adStateOpen) даже после прерывания соединения.

Нет никакого способа проверить немедленно. Архитектура SQL-серверов не позволяет этого.

Советую вам создать обработку ошибок.

Похоже, что единственный способ установить, что соединение потеряно, - попытаться открыть его и обработать ошибку.

+0

Хорошо, вы подтвердили мою теорию. Я попытаюсь создать механизм для надежной проверки состояния соединения. – Slappy

 Смежные вопросы

  • Нет связанных вопросов^_^