无法远程访问SQL Server 2008 R2的实例

Was*_*sif 6 sql-server tcp remote-access sql-server-2008

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

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

客户端机器:

sqlcmd -S XXX.XXX.XXX.XXX -U sa -P mypass
Run Code Online (Sandbox Code Playgroud)

成功连接....

但是当我使用时:

sqlcmd -S XXX.XXX.XXX.XXX\ITAPP -U sa -P mypass
Run Code Online (Sandbox Code Playgroud)

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连接服务器机器时,它立即连接.

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

Max*_*Max 16

也许是因为它是远程服务器上的命名实例.
命名实例不使用SQL Server标准Tcp-port 1433,只有默认(未命名)实例使用1433端口.
任何其他"命名"实例只是在另一个端口上侦听.
因此,您应该检查SQL端口正在侦听的SQL-Server配置程序,然后告诉客户端连接到此端口.
假设您的命名实例正在侦听12345端口,则客户端应使用以下命令进行连接

sqlcmd -S XXX.XXX.XXX.XXX,12345 -U sa -P mypass
Run Code Online (Sandbox Code Playgroud)

指定TCP端口时,则不需要实例的名称.
在我的理解中,实例的名称是SQL Server服务找到此命名实例正在侦听的TCP端口的一种方式.
但为此,您的客户端需要能够访问解析SQL Server实例名称的其他服务(可能是Sql Server Agent/SQL Server浏览器,但我不确定)

更新
此处是一个屏幕截图,显示了为SQL Server命名实例设置TPC端口的位置. 如何检查SQL Server命名实例的TPC侦听端口

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