我正在做一个示例代码,但遇到了一个非常奇怪的行为,我正在尝试使用此连接字符串连接到 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 集成身份验证或 (SSPI),当我在 Web 应用程序上使用它时,我收到此错误:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)
请注意,我创建了一个 .Net 应用程序,该应用程序使用相同的连接字符串,并从 IIS 所在的计算机运行,并且工作正常。
以下是我已完成的步骤:
我检查了打开它的 SQL 客户端配置并启用了协议 tcp 和命名管道。
我在 IIS 上进行了模拟并使用了 Windows 身份验证,并确保 IIS 使用与我相同的凭据工作。
我使用 Wireshark 来查看 wut 是两个连接之间的区别,我无法理解输出,但是从 IIS 看来,它总是尝试使用 Windows 身份验证,尽管我已经清楚地制作了字符串,使其不使用 Windows身份验证基本上会发生在连接开始时的一些协商,这两个应用程序“not_defined_in_RFC4178@please_ignore”似乎相同,然后 IIS 总是转到 NTLMSSP,指出我的用户除了通过用户名外无权访问数据库和密码,因此与 IIS 的协商失败,而它通常从应用程序成功。
我的问题是如何解决这个问题,我假设有一些配置要求 IIS 中的任何 SQL 客户端都使用 Windows 身份验证,但我不知道在哪里或如何禁用它
我注意到我没有使用web.config
SQL Server 连接字符串的配置,这个问题发生在 IIS7 上。