3

我发生了一个非常奇怪的情况,我希望这里有人知道原因。

我为默认端口 1433 上的所有端口启用了 TCP/IP。

所有测试都与 SQL Server Management Studio 和我的程序一致。

这有效:

  • 计算机名\实例名
  • 127.0.0.1
  • 127.0.0.1,1433
  • 192.168.1.100
  • 192.168.1.100,1433

这不起作用:

  • 127.0.0.1\InstanceName

注意:我知道这与防火墙无关,因为我可以在端口 1433 上 telnet 到 127.0.0.1。

注意 2:连接字符串无关紧要,因为测试与 Management Studio 一致,但我还是会给出:server={0};Integrated Security=True;Database=MyDatabase

在阅读 MSDN 时,您似乎应该能够通过 IP 地址连接到实例名称。

这里发生了什么?

4

1 回答 1

9

默认情况下,命名SQL 实例侦听随机端口。您需要启动SQL Browser服务,这会在 1434 上侦听 UDP 并响应实例发现请求,指示客户端真正的侦听端口。您还需要允许防火墙根据进程名称戳洞,以便 SQL 可以绑定到它感觉的任何端口。

否则,您必须在非命名端口上显式强制命名实例。

于 2009-10-23T19:25:08.240 回答