Это ужасное название, извините.
Вот сценарий:
Служба WCF использует LINQ для получения данных из базы данных SQL. Служба развернута на 4 (почти) идентичных серверах, работающих под управлением IIS. Все разговаривают с одним и тем же сервером SQL на отдельной машине.
3 из 4 серверов работают отлично.
На 4-м сервере мы получаем это
Сетевой или экземплярный
произошла ошибка при установлении
подключение к SQL Server. Сервер
не был найден или не был доступен.
Убедитесь, что имя экземпляра
правильно и что SQL Server
настроен для разрешения удаленного
соединения. (поставщик: именованные трубы
Поставщик, ошибка: 40 - Не удалось открыть
подключение к SQL Server)
Исключение выдается при первом использовании моего LINQ DataContext для выполнения запроса.
Все 4 сервера используют одинаковую строку подключения, определенную в их файле machine.config.
На проблемном сервере я могу подключиться с помощью SQL Management Studio с теми же учетными данными, что и в моем файле machine.config. Я также написал простой клиент командной строки, который устанавливает соединение ADO.NET с сервером базы данных, используя ту же строку подключения. Это работает.
Один и тот же код развернут на всех 4 серверах с одинаковыми настройками.
Что может быть причиной того, что только мой клиент только на одном сервере выдает эту ошибку?
Я сделал все возможное, чтобы исключить обычных подозреваемых (порт заблокирован брандмауэром, удаленный доступ не включен на SQL Server, используется именованный экземпляр SQL и т. Д.). Я также проверил, есть ли какие-либо жестко закодированные строки соединения в моем коде или где-либо еще в иерархии конфигурации. Насколько я могу судить, это не причина.