sql server 2008 express的话,最重要是在防火墙上添加允许sql server browser端口的入站规则。

老革命遇上新问题。曾几何时,我因为用sql server时间比较长,相对比较熟悉,不料今天却因为防火墙设置,局域网的开发机器无法访问服务器上的sql server而搞来搞去,一个上午就搭进去了。

试来试去,最后可以,记录一下。

一、基本情况

操作系统:windows 2008 server
数据库: sql server 2008 express

服务器本机可以访问sql server,但局域网上其他机器则不行。关掉服务器上的防火墙,外部可以访问,说明是防火墙问题。

二、修改步骤

1、启动 sql server browser服务
Sql Server Browser的作用是将 SQL Server 连接信息提供给客户端计算机。我记得这个服务是让其他机器可以搜索到服务器上的sql server实例,就像查看网上邻居一样。但客户端访问,由于是指明IP地址或机器名,不存在搜索的问题,按道理,不依赖这个sql server browser。但今天试验的结果,是必须要开,否则外部无法访问。也许,是所谓动态端口的原因?因为 sql server express只能用动态端口,无法指定端口。

2、添加防火墙入站规则
1)端口
允许 UDP 端口1434 连接。

SQL Server Browser 服务使用户能够连接到未在端口1433上进行侦听的数据库引擎的实例,而无需知道端口号。 而要使用 SQL Server Browser,必须打开 UDP 端口1434。

*2)sql server程序
允许外部访问 sql server程序。

在 “程序” 对话框中,选择 “此程序路径” 。 选择 “浏览”,导航到要通过防火墙访问的 SQL Server 实例,然后选择 “打开”。 默认情况下,SQL Server 在C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Binn\Sqlservr.exe。 选择“下一步”。 MSSQLXX 版本将特定于 SQL Server 版本。

这个似乎不是必须的。我在2台服务器上测试,一台无须添加这条规则,另一台则要。

参考资料
​​​为数据库引擎访问配置 Windows 防火墙​