【问题标题】:Unable to access an instance of SQL Server 2008 R2 remotely无法远程访问 SQL Server 2008 R2 实例
【发布时间】:2012-03-17 17:58:09
【问题描述】:

一个非常神秘的问题出现了:P

我有一个配置了静态 IP 的服务器。我已经安装了带有附加实例 (ITAPP) 的 SQL Server 2008 R2。现在,当我使用 IP 访问 SQL Server 时,会发生以下情况:

客户端机器:

sqlcmd -S XXX.XXX.XXX.XXX -U sa -P mypass

连接成功....

但是当我使用时:

sqlcmd -S XXX.XXX.XXX.XXX\ITAPP -U sa -P mypass

HResult 0xFFFFFFFF,级别 16,状态 1 SQL 网络接口:错误 定位指定的服务器/实例 [xFFFFFFFF]。

Sqlcmd:错误:Microsoft SQL Native Client:发生错误 同时建立与服务器的连接。

连接到 SQL Server 2005 时,此故障可能是由 事实上,在默认设置下 SQL Server 不允许远程 连接..

Sqlcmd:错误:Microsoft SQL Native Client:登录超时。

即使在使用 SQL Server Management Studio 的同一台计算机(安装了 SQL Server 的位置)上。我在两台机器上都关闭了防火墙,甚至允许 ITAPP 的所有协议(共享内存、命名管道、TCP/IP),还将Allow Remote connection 设置为 true。

当我使用127.0.0.1\SQLITRAX 在服务器机器上连接时,它会立即连接。

请帮我摆脱这个烂摊子:)

【问题讨论】:

  • 如果您使用的是 2008,为什么您的错误消息会显示 SQL 2005?

标签: sql-server sql-server-2008 tcp remote-access


【解决方案1】:

可能是因为它是远程服务器上的命名实例。
命名实例不使用 SQL Server 标准 Tcp 端口 1433,只有默认(未命名)实例使用 1433 端口。
任何其他“命名”实例只需侦听另一个端口。
所以你应该检查 SQL-Server 配置器,监听哪个 TCP 端口,然后告诉客户端连接到这个端口。
假设您的命名实例正在侦听 12345 端口,那么客户端应该使用以下命令进行连接

sqlcmd -S XXX.XXX.XXX.XXX,12345 -U sa -P mypass

当您指定 TCP 端口时,您不需要实例的名称。
据我了解,实例名称是 SQL Server 服务查找此命名实例正在侦听的 TCP 端口的一种方式。
但要使其正常工作,您的客户端需要能够访问解析 SQL Server 实例名称的其他服务(可能是 Sql server 代理/SQL Server 浏览器,但我不确定)

更新
这是一个屏幕截图,显示了为 SQL Server 命名实例设置 TPC 端口的位置。

那么,您的 SQL Server 命名实例在哪个 TCP 端口上侦听?

【讨论】:

  • 我刚刚用屏幕截图更新了响应,这里是查找服务器正在侦听的 TCP 端口的位置
  • 感谢有关端口的提示。基本上它几乎解决了我的问题。我唯一需要做的就是在 Windows 防火墙和高级安全向导中为这个特定端口创建一个入站规则。
【解决方案2】:

SQL Server Browser 服务需要可访问才能连接到命名实例。

请参阅this article 了解有关它的作用以及在防火墙上打开哪些端口的更多信息

technet article 提供了一个方便的脚本来打开所有需要的端口

【讨论】:

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