Подтвердить что ты не робот

Ошибка подключения 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.

4b9b3361

Ответ 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, а также может быть некоторая ошибка для сбоя сети