我最近发现自己需要在 SQL Server 2008(EXPRESS)上快速部署生产应用程序,但在运行 ASP.NET 应用程序的 Web 服务器和数据库服务器之间配置防火墙规则时遇到了一些问题。
我在互联网上找到的所有信息都声称我只需要在数据库服务器上访问 TCP 端口 1433/1434 和 UDP 端口 1434。但是,我们无法仅使用这些端口在 Web 应用程序和数据库之间建立连接。在我们数据中心的一位工作人员的帮助下,我们发现也有流量流向数据库服务器上的 TCP 端口 2242。打开此端口后,一切都正常,但我们不确定原因。
后来,由于一些磁盘空间问题,我不得不重新安装 SQL Server,并发现问题再次出现 - 在与数据包嗅探器进行另一次会话后,我们发现这次流量流向数据库服务器上的 TCP 端口 4541。我的问题是,SQL Server 中是否存在我遗漏的配置选项,导致它选择随机端口?我希望尽可能锁定我们的防火墙规则,当然我们希望避免任何未来神秘的连接问题,尤其是在应用程序上线后。
两台服务器都运行 Windows 2003 R2 X64。
答案1
回答我自己的问题,似乎默认情况下 SQL Server可能使用端口 1433,但在我的设置中它被设置为使用动态端口。本文介绍如何配置固定端口:
http://msdn.microsoft.com/en-us/library/ms345327%28v=SQL.100%29.aspx
答案2
嗯,默认情况下,端口 1433 上的侦听器是禁用的。您需要先启用 1433 侦听器,然后才能正常工作。此外,如果您使用的是“sa”帐户,我认为默认情况下该帐户是禁用的。您基本上只需要在 TCP 上打开 1433 端口。除非您要做一些不同的事情,否则您不需要通过防火墙打开 1434 udp 端口。
答案3
检查 SQL Server 正在运行的端口的快速方法是检查 SQL Server 错误日志。有一行显示 SQL Server 正在监听...。此实例是默认实例还是命名实例?SQL 安装默认实例,默认端口为 1433/1434,每个连续实例都使用动态端口。