【问题标题】:Could not open a connection to SQL Server无法打开与 SQL Server 的连接
【发布时间】:2010-08-31 18:23:13
【问题描述】:

我在连接到我的数据库服务器时遇到问题。数据库服务器不是本地的,我通过它的 IP 地址连接。

它在我的开发机器上运行良好。将网站发布到我的服务器后,它无法连接到我的数据库服务器。

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)

为什么我的发布服务器无法连接到数据库服务器,而通过开发机器却可以正常工作?

【问题讨论】:

    标签: asp.net sql sql-server


    【解决方案1】:

    我经常遇到这个问题。主要是因为两个问题。

    1. 打开 SQL Server 配置管理器。

      • 检查 SQL Server 网络配置是否支持 TCP/IP,如果已禁用,请启用它。 例如SqlServer 2005 网络配置,SQLEXPRESS 协议
    2. 打开 SQL Server 管理工作室

      • 单击 Sql Server 属性(右键单击服务器名称和 选择属性)。
      • 之后,选择“安全”页面并将勾选切换到“SQL Server 和 Windows 身份验证模式”。

    就是这样。

    【讨论】:

    • 这已经完成了:- TCP/IP 已启用- SQL Server 和“Windows 身份验证模式”也已检查,
    • 从我的客户端连接工作正常,但现在从服务器连接。我不知道为什么
    • 可能在服务器上,客户端协议不允许 TCP/IP。您也可以使用 SQL Server 配置管理器在您的服务器上进行检查。所以你只需要寻找“SQL Native Client Configuration/Client Protocols”
    • 开启了,不明白为什么在开发机器上可以,在发布服务器上不行
    【解决方案2】:

    我将尝试在今天的通灵调试中二对二...

    我会假设您没有使用集成安全性?如果是这样,它可能会解释为您本地计算机上的帐户可能具有权限,但在服务器上运行的 SYSTEM 帐户没有权限。不过只是在黑暗中开枪。

    【讨论】:

    • 你的照片让你看起来很有可能是你的通灵者。
    • 我把它添加到了connectionstrng Integrated Security=SSPI;它没有工作
    • @nezdet:您的更改实际上明确添加了 Windows 身份验证。如果您遇到的问题是 Josh 所建议的,除非您将运行 Web 服务器的凭据更改为具有数据库访问权限的集合(例如,您自己的,尽管您应该始终尝试使用 service网络服务器帐户。
    • @nezdet -- 我的建议是您在连接字符串中明确使用帐户来使用具有访问权限的已知 SQL 帐户:username=BillyBob;password=ILikeCorn;
    • 我使用的是已知的 SQL 帐户,它可以在管理工作室和开发机器上正常工作,但发布时却无法连接,
    【解决方案3】:

    听起来您的服务器无法建立网络连接,而不是安全问题。

    • 确保数据库和应用服务器上的任何防火墙都允许端口 (1433) 上的流量。
    • 确保您能够从两台机器上 ping 或跟踪。

    【讨论】:

    • 两台服务器都能ping通,我关闭了发布服务器上的防火墙,
    【解决方案4】:

    这是您第一次在网络服务器上发布您的网站吗?如果是,你确定你的连接字符串设置正确吗?

    您需要在 Web 服务器上创建一个登录名(也为此设置一个密码)和该 SQL 的 IP 地址。

    所以你需要 sql server host 的 IP Address , Database Name , UId , Pwd .

    【讨论】:

    • 这不是第一次,我有一些本地连接到数据库的其他应用程序,这个应用程序连接到不在本地的服务器,
    【解决方案5】:

    我同意这听起来像是网络问题,而不是安全问题。

    远程进入 Web 服务器并通过 IP 地址 ping 数据库服务器。如果这不起作用,您的服务器将无法通过该地址看到数据库服务器(不同的子网、不正确的防火墙/代理设置等)。您可能必须使用代理地址从 Web 服务器访问 DB 服务器,或者您的 Web 服务器也可能是网关,而 IIS 不知道在 LAN 上查找 DB 服务器。如果它确实有效,则计算机可能不在同一个端口上进行通信,或者防火墙可能会阻止该端口退出 Web 服务器。

    【讨论】:

      【解决方案6】:

      我花了几个小时尝试使用 sqlcmd 连接到 SQL Server。我禁用了防火墙,检查了“SQLEXPRESS 协议”中列出的所有 ip,编辑了我的主机文件。我尝试使用不同的 ips 和机器名连接到服务器。但没有一项工作奏效。经过数小时的调查,我发现我犯了绝对愚蠢的错误,使我无法连接。 我想提醒人们连接字符串不区分大小写。但是选项是!! 我所做的是我放了

      sqlcmd -s .\sqlserver

      但正确的字符串是

      sqlcmd -S .\sqlserver 所以要小心,人们

      【讨论】:

        猜你喜欢
        • 2011-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多