我最近在一系列运行 Windows Server 2012 的机器上安装了 SQL Server Express 2014。总共七台机器。
除了 1 个之外,其他人都住在同一个本地 域中
company.local
.一台流氓机器位于不同的公共(public)域中
public.company.org
.- 这台机器在一个单独域上的安装过程是由一个不太注意这个过程的人执行的,几乎选择了所有默认值(也就是点击-点击-点击安装。 ) 因此,默认情况下未启用某些功能,例如 SQL Server 身份验证和远程连接。
我们想通过 SQL Server 身份验证、使用 SSMS 从同一本地域 company.local 中的开发计算机进行远程连接。我们能够轻松开启这一功能。
至于允许远程连接,我们遇到了更多困难。
我们确保已定义防火墙规则以允许端口 1433(TCP)和 1434(UDP)上的入站连接。我们证实情况确实如此。
我们已将此规则设置为适用于所有配置文件:域、公共(public)、私有(private)。
<我们确保在 SQL Server 配置管理器中允许 SQLEXPRESS 的所有协议(protocol),特别是 TCP/IP。
我们启用了SQL Server Browser。
配置更改后,我们已多次重启所有服务。 我们甚至重新启动了机器。
- 我们也踢了盒子。
我们仍然无法使用以下任一方法访问 SQLEXPRESS 实例:
-
machine-name.public.company.com\SQLEXPRESS
-
machine-name.public.company.com\SQLEXPRESS,1434
-
<ip-address>\SQLEXPRESS
-
<ip-address>\SQLEXPRESS,1434
- 使用SSMS 或SQLCMD
- 使用 SQL Server 身份验证,使用常规登录或 sa。
- 使用 Windows 身份验证,在远程计算机上使用凭据。
-
Ping 服务器表明它有响应。并且我们已经验证这些端口确实是开放的。
据我们所知,我们已经将 6 台本地计算机的所有配置/环境设置修改、比较并匹配到不同域中的一台。
在所有级别一起禁用防火墙时,我们能够连接。
当然,我们不想让大门敞开,所以我们在防火墙中添加了入站规则,以允许与 SQL Server (SQLEXPRESS) 服务的各种连接。
问题
所以问题是我们所做的是否是正确的方法?
为什么其他本地计算机不需要为 SQL Server 进程本身添加此防火墙异常(exception)???
最佳答案
我已经检查了你的帖子两次,但我找不到任何关于你是否允许远程连接到该 SQL Express 实例的信息。当然,您已经允许所有协议(protocol),但这还不够。
默认情况下,禁用所有到 Express 实例的远程连接(也包括 DAC)。要检查此设置,请重新启动机器(或 SQL 实例)并查看 SQL Server 日志。具体来说,您会对以“SQL Server is listening on ...”开头的条目感兴趣 - 在那里,您会找到实例正在监听的所有协议(protocol)、端口和地址。 如果您看到的唯一 IP 是 127.0.0.1,那么实例将拒绝所有远程连接,无论防火墙或其他任何东西。
我没有 2014 Express 来检查它,但在 2012 中,此设置是通过配置管理器在“SQL Server 网络配置”部分中配置的。
关于sql-server - 允许远程连接到不同域中的 SQL Server 的防火墙规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25208032/