我遇到了一个非常奇怪的情况,我希望这里有人知道原因。
我为默认端口 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\实例名
注意:我知道这与防火墙无关,因为我可以在端口 1433 上远程登录到 127.0.0.1。
注意 2:连接字符串无关紧要,因为测试与 Management Studio 一致,但我还是会给出它:server={0};Integrated Security=True;Database=MyDatabase
在阅读 MSDN 时,您似乎应该能够通过 IP 地址连接到实例名称。
这是怎么回事?
最佳答案
命名 SQL 实例默认监听随机端口。你需要SQL Browser服务启动,它在 1434 上监听 UDP 并响应实例发现请求,指示客户端真正的监听端口。您还需要允许防火墙根据进程名称戳洞,以便 SQL 可以绑定(bind)到它感觉的任何端口。
否则,您必须在非命名端口上显式强制命名实例。
关于c# - 带有 IP 地址的 SQL Server 实例名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1615398/