PRB:从 ASP 连接到 SQL Server 时出现 "客户端无法建立连接" 错误消息


症状


在从 Web 服务器的单独计算机上打开 Active Server Page (ASP)代码中的连接时,可能会显示以下类似错误消息之一:
适用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误 "80004005" [Microsoft] [ODBC SQL Server 驱动程序] 客户端无法建立连接/asppage。 .asp,行 xxx
用于 SQL Server 的 Microsoft OLE DB 访问接口错误 "80004005" [DBNMPNTW] ConnectionOpen (CreateFile ())。/asppage.asp,xxx xxx
用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误 "80040ed" [Microsoft] [ODBC SQL Server 驱动程序] [SQL Server] 登录失败用户 "NT Authority\Anonymous Logon"。/asppage.asp,line xxx

原因


如果 SQL Server 安全模式仅设置为 Microsoft Windows NT,并且用于对 IIS 计算机上的用户进行身份验证的 NT 帐户(如匿名 IIS 访问 IUSR_computer)没有连接到远程 SQL Server 的 NT 计算机的权限,则会出现此错误。

解决方案


使用 IIS 匿名访问
  1. 使用 NT 的用户管理器工具,在远程 SQL Server 的 NT 计算机上创建一个相同的 NT 帐户,例如 IUSR_localcomputer。 为该帐户提供一个类似的密码,并向其授予 "本地登录" 权限。
  2. 使用 Internet 服务管理器打开 Web 应用程序的虚拟目录的 "属性" 工作表,选择"目录安全性" 选项卡,单击 "匿名访问和验证控件编辑" 按钮以显示身份验证方法。 单击 "允许匿名访问" 的 "编辑" 按钮以编辑用于匿名访问的 NT 帐户,然后清除复选框 "启用自动密码同步"。 单击 "确定" 以关闭对话框以保存所做的更改。第二个步骤是必需的,因为 NT 的帐户委派问题。
使用 IIS 基本身份验证
  1. 如果浏览器提示输入用户名和密码,请参阅前面的步骤(如果用户使用 NT 服务器的本地帐户登录到 IIS)。
  2. 如果用户使用域帐户登录,并且两台适用于 IIS 和 SQL Server 的 NT 计算机都在同一个域中,请确保该帐户在 SQL Server 的 NT 计算机上具有直接或间接的 "从网络访问此计算机" 的权限,具体取决于分配给该帐户所属组的权限。