Подключение к SQL server 2000 на контроллере домена Windows server 2003

#asp.net #controller #sql-server-2000 #dns #windows-server-2003

#asp.net #контроллер #sql-server-2000 #dns #windows-server-2003

Вопрос:

Я пытаюсь подключить ASP.NET приложение 2.0, размещенное на клиентском компьютере на экземпляре SQL server 2000, который установлен на контроллере домена под управлением Windows server 2003 (я понимаю, что это не лучшая практика, но это то, что я не могу изменить). Я использую проверку подлинности SQL Server, а не проверку подлинности Windows.

Во время отладки отображается следующая ошибка в момент попытки «подключения» в веб-приложении (не при запуске какого-либо объекта в Sql Server):

«Произошла ошибка при установлении соединения с сервером. При подключении к SQL Server 2005 этот сбой может быть вызван тем фактом, что при настройках по умолчанию SQL Server не разрешает удаленные подключения. (поставщик: поставщик именованных каналов, ошибка: 40 — Не удалось открыть соединение с SQL Server) «

Я провел некоторое исследование и проверил множество вещей:

1) Я уверен, что строка подключения верна — на самом деле я создал небольшое приложение для Windows, которое использует ту же информацию о соединении, и соединение выполняется успешно…

2) Это ограничено веб-приложением — приложение Windows, запущенное на удаленном клиентском компьютере, подключается просто отлично, используя ту же строку подключения (см. 1).

3) Настройки брандмауэра на обоих компьютерах не препятствуют подключению (см. 1).

4) Я могу выполнить пинг сервера Windows 2003 (см. 1)

5) Учетные данные SQL Server определенно имеют права на необходимые объекты

6) Если я (временно) помещаю веб-приложение на Windows server 2003 и запускаю его, оно загружается и работает нормально (с использованием браузера на отдельном компьютере или на клиентском компьютере, к которому я пытаюсь подключиться) — предполагая, что это только проблема с удаленным подключением, и подтверждаяповторное подключение между машинами, а также подтверждение необходимых прав безопасности пользователя SQL Server.

7) Я могу запустить анализатор запросов на клиентском компьютере и, используя те же учетные данные SQL Server, могу выполнять одни и те же запросы в целевой базе данных просто отлично.

Тупик. Пожалуйста, помогите!

Комментарии:

1. Включены ли удаленные подключения в SQL? Перейдите в Enterprise Manager, затем на левой панели разверните, пока не увидите соответствующий экземпляр сервера. Щелкните правой кнопкой мыши, а затем перейдите в раздел Свойства -> Безопасность -> SQLServer и Windows должны быть выбраны

2. Да — это было включено, а также в разделе «Подключения» были включены удаленные подключения. Проверяя это, я заметил, что SQL Server не является частью Active Directory. Интересно, знает ли кто-нибудь, может ли это быть проблемой. Кроме того, клиентский компьютер НЕ зарегистрирован в домене, но я не думал, что это будет проблемой, учитывая другое подключение, полученное из приложения Windows с того же клиентского компьютера.

3. Находятся ли ваши удаленные компьютеры в той же подсети, что и сервер? Вы заявили, что можете пинговать его, но пинг не обязательно проясняет трафик.

Ответ №1:

Вам нужно зайти в диспетчер конфигурации SQL Server и убедиться, что опция именованных каналов включена. Он не включен по умолчанию при установке SQL Server.

Комментарии:

1. Привет — спасибо за быстрый ответ, я запустил серверную сетевую утилиту SQL server и клиентскую сетевую утилиту, и у обоих включены именованные каналы — есть ли где-нибудь еще, что мне нужно посмотреть?

Ответ №2:

Из-за исследования, которое я провел в исходном вопросе, посвященном способности приложения Windows подключаться, но не ASP.NET приложение для подключения с того же компьютера и подтверждение того, что веб-приложение работает на самом сервере, я был убежден, что SQL server настроен правильно, что подключение и брандмауэры не былипроблема — должно быть, разница в учетных данных безопасности приложения Windows и веб-приложения.

Приложение Windows запускается с учетными данными безопасности пользователя Windows, вошедшего в систему, и проходит проверку подлинности с их помощью, тогда как веб-приложение запускается с ограниченной учетной записью и не передает эти учетные данные при подключении к SQL Server по умолчанию. Я просто добавил в web.config, который выдает себя за учетную запись пользователя, в которой запускается веб-приложение, и все это сработало!

Проблема решена.