Как быстро проверить соединение с базой данных? - PullRequest
1 голос
/ 23 апреля 2009

В моем приложении win - я хочу отобразить информацию (или значок БД), если сервер базы данных недоступен Но я не хочу ждать 30 секунд. Пользователь может настроить сервер, пользователя, pw в моем диалоге настроек. Итак, есть ли способ в дозвуковой очень быстро проверить, работает ли соединение БД?

Ответы [ 4 ]

2 голосов
/ 23 апреля 2009

Вы можете создать простую хранимую процедуру ping и затем выполнить ее с небольшим временем ожидания для команды SQL, например:

SubSonic.StoredProcedure sp = SPs.PingStoredProcedure();  
sp.CommandTimeout = 2;  
sp.Execute();  
0 голосов
/ 23 апреля 2009

В текущей редакции (521) есть метод IsOnline (), который вы можете использовать с шаблоном хранилища. В настоящее время он всегда возвращает true (см. здесь ) ... но как только это будет исправлено, вы можете использовать перегруженный метод, который передает строку подключения с коротким таймаутом.

http://code.google.com/p/subsonicproject/source/browse/trunk/SubSonic/Sql%20Tools/SubSonicRepository.cs

0 голосов
/ 23 апреля 2009

Можете ли вы установить минимальное время ожидания соединения - см. Здесь пример , или, возможно, сделать это в фоновом потоке, и дать пользователю знать, что его пробуют.

0 голосов
/ 23 апреля 2009

Вы можете узнать некоторую информацию о протоколе и просто эмулировать ее с помощью сокетов TCP. Так что это похоже на подключение к веб-серверу и выдачу HTTP-команд. Однако вы должны выполнять команды, подходящие для вашей базы данных. Делая это, вы можете избежать любого тайм-аута, встроенного в драйвер, или чего-то еще. Кроме того, вы можете просто подключиться к порту IP: с помощью TCP и посмотреть, слушает ли кто-нибудь. Что касается Subsonic, нет.

...