SqlConnection error Поставщик именованных каналов - PullRequest
1 голос
/ 09 июля 2010

Немного фона:

У меня есть приложение Windows .NET, которое используется примерно 40 сотрудниками на местах в Северной Америке. Эта программа позволяет пользователям вводить данные, находясь в поле (без доступа к Интернету), а затем синхронизировать их с нашей базой данных Sql Server 2005 ночью. Пару дней назад двое из моих пользователей сообщили о получении следующей ошибки, когда они выполнили действие, которое попыталось бы подключиться к нашей базе данных сервера (которая использует класс .NET SqlConnection).

System.Data.SqlClient.SqlException: A связанный с сетью или конкретный экземпляр произошла ошибка при установлении подключение к SQL Server. Сервер не был найден или не был доступен. Убедитесь, что имя экземпляра правильно и что SQL Server настроен для разрешения удаленного соединения. (поставщик: именованные трубы Поставщик, ошибка: 40 - Не удалось открыть подключение к SQL Server)

Наши полевые сотрудники обычно работают в гостиничном Wi-Fi-соединении, и сначала я подумал, что они оба случайно попали в «неработающую» сеть в один и тот же день. На следующий день, переехав в разные отели, проблема исчезла у одного из этих пользователей, но осталась у другого.

Помимо предоставления сообщения об ошибке, целью этого фона является указать, что

  • Впервые эта проблема возникла за год использования этого программного обеспечения, а
  • У большинства наших пользователей нет проблем с подключением к нашей базе данных сервера с помощью того же программного обеспечения.

Это заставляет меня стесняться думать, что проблема на сервере (большинство форумов и блогов, которые я читал об этой ошибке, предоставляют шаги для обеспечения правильной настройки SQL Server).

Заметив часть поставщика именованных каналов *1022* в сообщении об ошибке, я догадался, что, возможно, компьютер или сеть этого пользователя вызывали попытку подключения через каналы, а не через TCP, поэтому я попытался настроить сервер так, чтобы ОБА TCP / IP и Именованные каналы для удаленных подключений, где ранее был установлен только TCP / IP. Ошибка продолжилась для этого пользователя после изменения этого параметра.

Так что теперь у меня остался мозговой штурм о том, что может быть особенного в этом подключении компьютера / программного обеспечения / интернета этого пользователя, что помешало бы ему иметь возможность подключения к нашему SQL Server.

Наша строка подключения использует URL-адрес нашего сервера (не IP-адрес), и я подумал, не было ли у его ноутбука проблем с поиском по этому адресу. Однако он смог зайти на веб-сайт, размещенный по тому же URL-адресу, поэтому, я думаю, проблема в другом месте.

Любые идеи будут с благодарностью. Спасибо!

Ответы [ 2 ]

3 голосов
/ 21 ноября 2012

Вероятно, вы уже давно решили эту проблему или перешли к ней, но для тех, у кого есть похожие проблемы с ошибкой 40 / именованные каналы при подключении к экземпляру сервера SQL, у нас сработало следующее простое решение:

Вы можете заставить свою клиентскую программу использовать TCP (или именованные каналы, или другие доступные методы), добавив префикс в строку подключения.

Для примера .NET SQLConnection укажите в подключении SQLConnectionстрока выглядит так:

Server=tcp:192.168.0.1;Integrated Security=SSPI; database=sampledb

См. эту запись в блоге для получения дополнительной информации.

1 голос
/ 09 июля 2010

Возможно ли, что они заблокированы брандмауэром отеля, который разрешает трафик только на определенные порты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...