Тестирование сетевого подключения через открытие подключения к базе данных - PullRequest
2 голосов
/ 03 августа 2011

У меня есть небольшое приложение .net 2.0 systray (C #), которое периодически проверяет сетевое подключение. Это делается путем попытки открыть соединение с экземпляром SQL-Server на другом компьютере (и выбрать строку из таблицы). Приложение сохраняет документы, созданные другим процессом, в базу данных, когда находит соединение. Он будет использоваться в средах с потенциально опасными беспроводными сетями.

При тестировании наша команда QA использует ipconfig /Release на сервере БД (на котором размещается БД Sql-Server 2005). Мы обнаружили, что приложение продолжало утверждать, что оно подключено к сети, поскольку оно продолжало успешно открывать подключения к SQL Server. Поведение приложения systray было ошибочным в моем собственном тестировании с использованием ipconfig /release.

По предложению нашего отсутствующего в настоящее время сетевого парня я изменил свое собственное внутреннее тестирование (приложение, размещенное на ВМ, подключающееся к БД на моей рабочей станции), чтобы вместо этого отключить сетевое соединение с ВМ. Это приводит к ожидаемому поведению (приложение systray не может найти сетевое соединение). Ребята из QA немного подозрительно относятся к моим предположениям, что они делают то же самое, и я должен успокоить их.

  1. Мне было предложено, чтобы SQL Server использовал именованные каналы для приема входящих соединений. Если Именованные каналы и TCP / IP включены, аннулирует ли это тест ipconfig /release?

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

  3. Здесь происходит что-то еще, о чем я не подозреваю? Что-то о том, как ipconfig /release работает

1 Ответ

0 голосов
/ 03 августа 2011

Для вашего приложения я бы использовал только протокол связи TCP / IP. Хотя SQL Server поддерживает другие протоколы связи, такие как именованные каналы, я бы отключил их на вашем сервере, чтобы он принимал только соединения TCP / IP. Это наименьшее количество накладных расходов и должно работать лучше, независимо от скорости соединения.

Именованные каналы - это протокол, отличный от TCP / IP, поэтому освобождение IP-адреса может никак не повлиять на связь по именованному каналу (звучит так, как есть).

На компьютере с SQL Server укажите TCP / IP в качестве протокола № 1 и отключите именованные каналы. QA повторно запустить тест. Я включил снимок экрана конфигурации для справки.

Sql Server Config

...