Я делаю образец кода, и я застрял в действительно странном поведении, я пытаюсь подключиться к 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.