我有一台安装了 SQL Server 2008 R2 Enterprise 的 Windows Server 2008 R2 机器。SQL Server 被设置为一个命名实例,所以它的全名是“ATLANTA3\FOO”(“Atlanta3”是机器名,“Foo”是实例名)。
我已经设置了一个具有高级安全规则的 Windows 防火墙,以允许所有传入连接到 sqlservr.exe,这是在配置管理器中设置的:
Shared Memory: Enabled
TCP/IP: Enabled
Protocol:
Enabled: Yes
Keep Alive: 30000
Listen All: Yes
IP Addresses:
(Most of these are IPv6 addresses assigned to tunnel adapters and are ignored)
IP2:
Active: Yes
Enabled: Yes
IP Address 192.168.0.17 // this is the internal LAN adapter
TCP Dynamic Ports: 0
TCP Port: (blank)
IP4:
Active: Yes
Enabled: Yes
IP Address 89.xx.xx.xx // this is the Internet-exposed adapter. I can ping this from home.
TCP Dynamic Ports: 0
TCP Port: (blank)
IPAll:
TCP Dynamic Ports: 49280
我使用 TCPView 查看实例正在侦听的端口 (49280),我可以完美地打开一个 telnet 连接。
但是我似乎无法从任何远程机器连接到实例,无论是在内部 192.168.0.x LAN 上还是从 Internet 上。我从 SSMS 收到此错误:
标题:连接到服务器
无法连接到 ATLANTA3\FOO。
附加信息:
建立与 SQL Server 的连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 定位指定的服务器/实例时出错)(Microsoft SQL Server,错误:-1)
如需帮助,请单击: http: //go.microsoft.com/fwlink ?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=-1&LinkId=20476
我已遵循 TechNet 和 MSDN 文章中的所有说明以允许 SQL Server 通过防火墙。这听起来像是 SQL Server 浏览器的问题,但我找不到任何关于让 SSB 与防火墙配合使用的信息,假设它曾经需要。
我不能完全禁用防火墙,因为当我这样做时,服务器会断开与所有网络的连接并且没有远程响应,我必须让数据中心人员为我手动重启机器(不好)。
UDP 1434 是否在您的防火墙上打开?这是 SQL 浏览器所使用的端口。将 SQL 浏览器视为 SQL 实例名称的 DNS。它将实例名称解析为端口号。