Приостановка приложения при недоступности сети \ SQL Server - PullRequest
1 голос
/ 08 января 2011

Мое приложение подключается к нескольким экземплярам SQL Server (с помощью SMO и ADO.net), все эти соединения закрыты должным образом (я использую), одно соединение является SqlDependency для уведомления об изменении таблицы.

Часть приложения устанавливает инкапсулированное VPN-соединение с удаленной системой, что приводит к недоступности всех сетевых ресурсов, включая экземпляры SQL.

Какой рекомендуемый метод обработки этого сценария?Где отключение сети \ sql часто, но предсказуемо.

Я использую пул соединений, поэтому не могу контролировать восстановление соединения, если я попытаюсь открыть соединение (которое получает доступное соединение из пула), произойдет сбой, как только я попытаюсь использоватьЭто.(Поскольку объединенные в пул соединения не проверяются для экономии накладных расходов).

1 Ответ

3 голосов
/ 09 января 2011

Используйте класс NetworkChange для реагирования на изменения таблицы IP-адресов, которые указывают на то, что стоит попробовать еще раз. Этот класс будет уведомлять вас, когда VPN подключается и когда отключается. Когда вы обнаружите изменение, очистите все пулы соединений с помощью SqlConnection.ClearAllPools.

Вам также следует изучить альтернативы VPN, которые по-прежнему позволяют просматривать ресурсы локальной сети при удаленном подключении, например DirectAccess .

...