【问题标题】:Accessing SQL Server on Windows Server 2008 R2 from remote client从远程客户端访问 Windows Server 2008 R2 上的 SQL Server
【发布时间】:2011-08-08 16:58:09
【问题描述】:

我们目前正在从使用安装在远程 CentOS 机器上的 PostgreSQL 转换为使用安装在远程 Windows Server 2008 R2 机器上的 MS SQL Server 2008 R2。

我们使用此数据库的 Web 应用程序已安装并运行在另一个 CentOS 机器上,它将保留在那里。

所有这些盒子都由第 3 方托管服务提供商提供,并且都在同一个域网络上。

因此,我们的开发远离服务器/数据库域,因为我们的开发机器是远程的。在过去,打开 VPN 就足以让我们在 PC 上本地运行的 Web 应用程序的开发实例远程连接到 CentOS 机器上运行的 PostgreSQL 数据库。

但是现在我们在使用 Windows Server 2008 R2 机器时遇到了麻烦。即使在 VPN 打开的情况下,任何连接(甚至 ping)远程服务器的尝试都会超时。

我们获取与新数据库服务器上的数据库实例的连接的代码是正确的,因为当我们将该代码上传到 CentOS 应用程序框并运行它时,它连接正常,因为代码现在正在运行在与 Windows Server 2008 R2 框相同的物理域。但是我们需要从远程开发机器建立连接。

这有意义吗? 我们需要更改一些 Windows 防火墙设置以允许远程连接吗? 正如我所说,我们甚至无法从远程机器 PING 新的 Windows Server 2008 R2 机器。

【问题讨论】:

    标签: sql-server windows-server-2008-r2


    【解决方案1】:

    以下是对我的远程连接有效的总结。我不是这方面的专家,所以我的一些步骤可能不是必需的。我从这个问题的其他答案中采取了一些步骤。

    • 打开 SQL Server 配置管理器
    • 选择 SQL Server 网络配置
    • 选择您的 SQL Server 实例
    • 确保 TCP/IP 协议已启用
    • 右键单击 TCP/IP 协议
    • 选择属性
    • 点击 IP 地址标签
    • 向下滚动到 IP4。服务器的 IP 地址应该在这里。将 active 设置为 yes 并将 enabled 设置为 yes。将 TCP 端口设置为 1433(不知道是否有必要。可以请高手评论一下)
    • 向下滚动到 IPAll。将 TCP 端口设置为 1433
    • 为端口 1433 制定入站防火墙规则
    • 打开sql server management studio,右键服务器实例,属性->连接->允许远程连接。安全性-> SQL Server 和 Windows 身份验证模式
    • 重启sql server服务
    • 重启sql server浏览器

    就像另一个答案说您还必须在客户端中使用正确的连接字符串。

    【讨论】:

    • 我尝试了很多解决方案,这个“向下滚动到 IPAll。将 TCP 端口设置为 1433”解决了我的问题
    【解决方案2】:

    执行以下操作:

    1. 打开SQL Server Configuration Manager
    2. 选择SQL Server Network Configuration
    3. 选择您的 SQL Server 实例
    4. 确保TCP/IP协议已启用
    5. 如果服务器关闭,请重新启动服务器

    考虑以下几点:

    • 身份验证模式(Windows /SQL Server / 混合)
      • Windows 用户权限
    • 连接字符串中的服务器名称
      • \(相互物理网络)
      • tcp:\(不同的物理网络)

    【讨论】:

    • 嗨,谢谢。已为所有实例启用已检查的 TCP/IP,它是。您对“tcp:”是什么意思?目前,连接字符串在下一条评论中如下所示......正如我所说,这在同一个物理网络中工作正常,但在不同的远程物理网络中却不行。我把这个 tcp 放在哪里:?
    • jdbc:sqlserver://:;instanceName=;databaseName=;
    • 此外,当我打开 Windows 远程桌面到 Windows Server 2008 R2 机器并在其上启动 SQL Server Management Studio 时,要连接到它使用 Windows 身份验证的数据库,这会是一个问题吗?
    • 对不起@Nick,我没有注意到we can't even PING the new Windows Server 2008 R2 machine。我认为这只是 SQL Server 的问题。在这种情况下,您应该检查网络设备和配置,但我不是管理员,无能为力:)
    【解决方案3】:

    确保您畅通了用于 SQL Server 的 1433 端口。如果您的实例被命名,您需要在配置管理器中为该实例设置端口,然后在防火墙中取消阻止该端口。

    【讨论】:

    • 您好,感谢您的建议。我检查了 Windows 防火墙。它被关闭了,所以我把它打开了。这禁用了与我们的 CentOS 应用程序框的连接,因此我按照您的提示添加了允许各种 SQL Server 端口的规则,并将固定端口应用于我们命名的 SQL Server 实例。从我们的 CentOS 应用程序框中执行此重新启用连接,因此一旦打开 Windows 防火墙,您的提示确实会有所帮助。但是,无论是否打开 VPN,我们仍然无法从远程计算机连接。所有 SQL Server 端口防火墙规则都设置为 Domain+Private+Public。
    • 如果无法连接,则为网络问题。检查您的路由器配置,也许您可​​以通过从命令行运行 netstat 来检查流量。
    【解决方案4】:

    结合其他答案的提示和我们的托管服务提供商的帮助,我们设法解决了这个问题。这主要是我们的提供商阻止了这些端口的问题。

    【讨论】:

      【解决方案5】:

      我知道这是一篇旧帖子,但要检查的另一件事是确保您在 SQL Server 网络配置的 IP 地址选项卡上启用了特定的 IP 地址和端口,这是对其他帖子的补充.请参阅此LINK 了解更多信息

      【讨论】:

        【解决方案6】:

        如果在ip配置等之后还是有问题。

        请检查您的客户端电脑的日期时间。

        应该和服务器一样

        [我最近用这种技术解决了]

        如果客户端机器未与服务器时间同步客户端不连接到服务器,则 sql server 存在问题。

        【讨论】:

          猜你喜欢
          • 2012-03-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-26
          • 2011-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多