让我向您解释一下当前的情况。我们在内部网(Windows 2003 Server 和 Sql Server 2000)上运行了 Framework 2 上的 asp.net 应用程序。现在我们有一台 XP 计算机,我们在该计算机上安装并配置了 IIS,虚拟目录指向本地 XP 计算机,并且该计算机连接到我们的内部网。我们已将服务器的相同应用程序文件复制到这台 XP 计算机。但问题是应用程序的连接字符串/数据库指向内部网服务器。问题是当我们尝试在 XP 计算机上运行该应用程序时,我们收到此错误:
建立与服务器的连接时发生错误。连接到 SQL Server 2005 时,此失败可能是由于默认设置下 SQL Server 不允许远程连接所致。(提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)
此查询是否与此网站或 stackoverflow 相关或有关?
答案1
Serverfault 是解答这个问题的正确地方。
错误消息非常清楚:XP 计算机上的 ASP 无法连接到 SQL Server 2000 实例。它无法使用命名管道协议找到 SQL 2000 计算机。这可能是由多种因素造成的:
- WIND/DNS 解析,确保 SQL 2000 计算机的名称可以在 XP 计算机上解析(
nslookup <sqlhost>
在 XP 主机上) - IP 路由问题,确保 SQL 2000 地址可以从 XP 机器访问(
ping <sqlhost>
从 XP 主机,虽然不完全准确,但是一个好的开始) - IPSec 问题,请确保 SQL 2000 主机允许来自 XP 主机的 TCP(从 XP 主机在 SQL 主机上的任何开放端口上进行 telnet,ping 与 IPSec 无关)。
- 命名管道 SMB 协议问题,请确保两台机器上都启用了“文件共享”协议端口 (135、445)。或者将 XP 客户端堆栈切换为使用 TCP 协议,并确保 SQL 2000 正在监听 TCP 协议(建议使用命名管道),请参阅配置客户端网络协议和SQL Server 网络实用程序。
- 如果您选择通过命名管道使用 TCP,还请确保防火墙允许 SQL Server 侦听端口。