当前位置:首页 > 问答 > 正文

MSSQL到底用哪些端口啊,数据库端口占用情况简单聊聊

说到MSSQL服务器到底用了哪些端口,最直接、最出名的答案就是1433端口,这个端口是MSSQL数据库引擎的默认端口,绝大多数情况下,当人们谈论连接MSSQL数据库时,指的就是通过1433端口进行通信,这个信息来源于微软官方的文档,在安装MSSQL Server时,如果没有进行特殊配置,数据库引擎的默认实例就会监听TCP 1433端口,这就像是一个房子的正门,大家默认都从这里进出。

事情往往没那么简单,除了这个众所周知的“正门”,MSSQL还有其他的“侧门”和“后门”,用于不同的服务和场景。

如果你在服务器上安装了多个MSSQL数据库引擎实例,那么情况就变了,第一个安装的实例叫“默认实例”,它确实用1433端口,但后续安装的实例被称为“命名实例”,为了不发生端口冲突,MSSQL会为这些命名实例分配一个动态端口,所谓动态端口,就是每次数据库服务启动时,可能会随机选择一个可用的端口号,这显然不利于客户端连接,因为客户端不知道每次启动后端口号是多少,为了解决这个问题,MSSQL还提供了一个叫做“SQL Server Browser”的服务,这个服务本身固定监听UDP 1434端口,它的作用就像一个公司的前台接待员,当客户端想连接一个命名实例时,它不知道具体端口,就会先向服务器的UDP 1434端口询问:“请问名叫‘某某’的实例在哪个端口上?”SQL Server Browser服务就会告诉客户端正确的端口号,UDP 1434端口对于连接命名实例来说至关重要,这个机制同样在微软的官方技术文档中有详细说明。

MSSQL到底用哪些端口啊,数据库端口占用情况简单聊聊

除了最主要的数据库引擎,MSSQL还有一些其他服务也会占用端口,用于报表服务的SQL Server Reporting Services,它的默认HTTP端口是80,HTTPS端口是443,这和一般的网站服务是一样的,再比如,早期版本中用于数据分析的SQL Server Analysis Services,其默认端口是2383,而它的浏览器服务则用2382端口,还有用于数据集成服务的SQL Server Integration Services,它会使用135端口,并可能涉及一系列动态端口(DCOM范围),这些端口的分配信息都可以在对应服务的配置管理器或官方部署指南中找到。

在实际环境中,端口占用情况会是怎样的呢?最简单直接的方法就是去服务器上查看,在Windows操作系统中,你可以打开命令行(以管理员身份运行),然后输入命令 netstat -ano 并回车,这个命令会列出所有当前正在监听的端口以及使用该端口的进程ID,你可以在这一长串列表里寻找端口号是1433、1434等的行,记下对应的PID(进程ID),然后打开任务管理器,在“详细信息”选项卡里,根据PID找到是哪个程序(很可能是sqlservr.exe之类的)占用了这个端口,这个方法能最真实地反映当前系统的端口占用情况。

MSSQL到底用哪些端口啊,数据库端口占用情况简单聊聊

更专业一点的方法是使用MSSQL自带的配置工具——“SQL Server配置管理器”,你可以在里面找到对应的SQL Server实例,右键属性,在“网络配置”的TCP/IP属性中,就能清晰地看到它当前正在监听的IP地址和端口号,这是最权威的查看方式,因为它直接来自于MSSQL自身的配置。

了解这些端口信息非常重要,尤其是在配置防火墙的时候,很多连接不上的问题,归根结底都是防火墙把必要的端口给阻挡了,如果你在服务器本机可以用客户端连上数据库,但从另一台电脑就连不上,十有八九是防火墙的问题,这时候,你就需要在服务器的防火墙设置中,为MSSQL所需的端口(比如TCP 1433,UDP 1434等)添加入站规则,允许外部连接。

最后还要提一下端口更改,出于安全考虑,有些管理员会建议更改默认的1433端口,这被称为“安全通过隐匿”,虽然这不是一个非常坚固的安全措施,但确实能减少一些简单的自动化攻击,更改端口同样是在“SQL Server配置管理器”中完成,修改后需要重启MSSQL服务才能生效,但要注意,端口改了之后,所有客户端连接字符串里的端口号也要相应地修改,否则就连不上了。

MSSQL的核心端口是TCP 1433和UDP 1434,但它们只是冰山一角,不同的组件服务会使用不同的端口,搞清楚你的应用到底用到了MSSQL的哪些功能,然后有针对性地在服务器和防火墙上检查和管理这些端口,是保证数据库网络连接畅通无阻的关键,所有这些操作的依据,最终都指向微软官方发布的MSSQL产品文档和配置指南。