Ошибка подключения IIS/SQL Server
Я делаю образец кода, и я застрял в действительно странном поведении, я пытаюсь подключиться к SQL Server, используя эту строку соединения
"Data Source=" + ServerName + "." + DomainName + ";Initial Catalog="+DBName+";Integrated Security = false;Persist Security Info=false;User ID=sa;Password=" & Mypassword & ";Connection Timeout=90"
По-видимому, я не использую Windows Integrated Authentication или (SSPI), когда я использую это в веб-приложении, я получаю эту ошибку:
При установлении соединения с SQL Server возникла связанная с сетью или конкретная ошибка экземпляра. Сервер не найден или не был доступен. Проверьте правильность имени экземпляра и настройте SQL Server для удаленного подключения. (поставщик: поставщик Named Pipes, ошибка: 40 - не удалось открыть подключение к SQL Server)
Только для того, чтобы отметить, что я создал приложение .Net, которое использует одну и ту же строку соединения и работает с компьютера, на котором находится IIS, и работает нормально.
Вот шаги, которые я сделал:
-
Я проверил конфигурацию клиента SQL, которую я открыл, и включил как протокол tcp, так и именованные каналы.
-
Я сделал олицетворение в IIS и использовал проверку подлинности Windows и удостоверился, что IIS работает с теми же учетными данными, что и мои.
-
Я использовал Wireshark, чтобы увидеть, что wut - это разница между двумя соединениями, и я не мог понять выход, однако кажется, что из IIS он всегда пытается использовать проверку подлинности Windows, хотя я ясно сделал строку такой, что он не использует проверку подлинности Windows в основном, но бывает, что некоторые переговоры в начале соединения, которые кажутся одинаковыми из обоих приложений "not_defined_in_RFC4178 @please_ignore", а затем IIS всегда идет на NTLMSSP, отмечая, что мой пользователь не имеет доступа к базы данных, за исключением имени пользователя и пароля, поэтому согласование не выполняется с IIS, пока оно обычно выполняется из приложения.
Мой вопрос в том, как я могу это исправить, но я предполагаю, что существует некоторая конфигурация, которая предусматривает, что любой клиент SQL из IIS использует проверку подлинности Windows, но я не могу знать, где и как ее отключить.
Я отмечаю, что я не использую конфигурацию web.config
для строки подключения SQL Server, и эта проблема возникает с IIS7.
Ответы
Ответ 1
Вот первые вещи, которые я хотел бы проверить:
-
Убедитесь, что пользователь пула приложений имеет права доступа к сетевым ресурсам.
- Поскольку вы заявили, что он работает, когда вы вошли в систему, попробуйте изменить пользователя пула приложений на пользователя, с которым вы входите в систему.
-
Убедитесь, что в вашем web.config включен режим олицетворения. Если вы это сделаете, убедитесь, что пользователь может получить доступ к сетевым ресурсам.
-
Попробуйте изменить строку подключения для использования IP-адреса (в качестве теста). Если это исправляет проблему, возможно, это какая-то проблема DNS.
- Убедитесь, что вы включили в конец IP-адреса значение 1433.
- Задайте
Network Library=DBMSSOCN
в строке подключения. (Подробнее см. article на странице ConnectionStrings.com.)
Ответ 2
Если вы набрали точную строку соединения, как указано выше, проверьте, чтобы изменить и вокруг Пароль в строке подключения +.
Строка соединения, написанная выше, вообще не является допустимой строкой, так как строка может быть конкатенацией другой строки, используя +, не используя и в С#, как я знаю.
Ответ 3
Кроме того, что указали другие, единственный раз, когда я вспоминаю сообщение об ошибке, в частности, с ссылкой "Именованные каналы", было основано на настройке SQL-Server.
Чтобы подтвердить, я зашел в свою версию диспетчера конфигурации SQL Server. Затем посмотрел на
"Конфигурация SQL Native Client 11.0" (на всякий случай, как для 32-разрядной, так и для 64-разрядной версии) и была открыта для отображения "Client Protocols". В нем отображаются опции для общей памяти, TCP/IP и именованных каналов. Убедитесь, что протокол "Именованные каналы" включен.
Ответ 4
Вы упомянули, что SQL Server находится на другом компьютере. Вы должны убедиться, что служба браузера SQL Server работает на этом компьютере.
Вы найдете его в консоли управления Windows Services (а также в других местах).
Кроме того, вам необходимо убедиться, что в брандмауэре открыт UDP-порт 1434.
Ответ 5
Проверьте значения ServerName, DomainName, DBName и MyPassword.
Правильны ли они?
Как они заполняются?
Ответ 6
Сначала проверьте это:
Убедитесь, что сервер sql принимает удаленные подключения
Sql Server Instance → Properities- > Connections- > Разрешить удалять соединения.
после второго шага:
Попробуйте настроить соединение в VS с помощью панели "Проводник сервера":
1) Откройте проводник сервера.
2) Щелкните правой кнопкой мыши "Соединения данных" и выберите "Добавить соединение"
3) В следующем диалоговом окне выберите свой DataSource и базу данных, укажите информацию о безопасности и нажмите кнопку "Проверить соединение".
4) Когда соединение работает, нажмите "ОК"
5) выделите свою базу данных на панели "Проводник сервера" и просмотрите панель "Свойства". Будет показан рабочий пример строки подключения, которую вы можете скопировать и вставить в свое приложение или файл конфигурации.
Ответ 7
Давайте рассмотрим шаги для устранения этой ошибки.
1) SQL Server должен быть запущен и запущен.
2) Включить TCP/IP в конфигурации SQL Server
3) Открыть порт в брандмауэре Windows
4) Включить удаленное подключение
5) Включить службу браузера SQL Server
6) Создать исключение sqlbrowser.exe в брандмауэре
7) Повторное создание псевдонима
Источник здесь
Надеюсь, что это поможет
Ответ 8
может быть сервер SQL не был распознан клиентской системой
поскольку произошла ошибка из-за недоступности сети SQL Server, а также может быть некоторая ошибка для сбоя сети