即将出现一个非常神秘的问题: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
在服务器计算机上连接时,它会立即连接。
请帮我解决这个烂摊子:)
答案 0 :(得分:16)
也许是因为它是远程服务器上的命名实例
命名实例不使用SQL Server标准Tcp-port 1433,只有默认(未命名)实例使用1433端口。
任何其他“命名”实例只是听另一个端口
因此,您应该检查SQL端口正在侦听的SQL-Server配置程序,然后告诉客户端连接到此端口。
假设您的命名实例正在侦听12345端口,那么客户端应使用以下命令进行连接
sqlcmd -S XXX.XXX.XXX.XXX,12345 -U sa -P mypass
指定TCP端口时,则不需要实例的名称 在我的理解中,实例的名称是SQL Server服务查找此命名实例正在侦听的TCP端口的一种方式 但为此,您的客户端需要能够访问解析SQL Server实例名称的其他服务(可能是Sql Server Agent / SQL Server浏览器,但我不确定)
<强>更新强>
这是一个屏幕截图,显示了为SQL Server命名实例设置TPC端口的位置。
那么,哪个TCP端口是您命名的SQL Server侦听实例?
答案 1 :(得分:3)
需要能够访问SQL Server Browser服务才能连接到命名实例。
有关其功能以及在防火墙上打开的端口的更多信息,请参阅this article
这个technet article提供了一个方便的脚本来打开所有必需的端口