1. 前言
在使用MSSQL服务的过程中,有时候会发现这个服务正在监听80端口,这时候需要对其进行解决。本文将讲解MSSQL服务监听80端口的原因以及相应的解决方案。
2. 原因
2.1 MSSQL默认使用TCP/IP协议
MSSQL使用TCP/IP协议进行通信,而TCP/IP协议默认使用1433端口。但是,在MSSQL配置不当的情况下,它会使用无法访问或会被其他应用程序使用的端口,比如80端口。
SELECT DISTINCT local_tcp_port
FROM sys.dm_exec_connections
WHERE local_tcp_port IS NOT NULL
ORDER BY 1;
运行以上SQL语句可以查看MSSQL使用的端口,如果发现是80端口,则说明MSSQL服务在监听80端口。
2.2 IIS与MSSQL共存
IIS是一款微软的网络服务软件,如果在同一台机器上安装了IIS和MSSQL,那么MSSQL就可能会监听80端口。因为IIS默认使用80端口,如果MSSQL与IIS共存,则MSSQL可能会使用IIS的端口。
2.3 MSSQL服务不必要地绑定了80端口
有时候,MSSQL服务可能会不必要地绑定了80端口,这种情况比较少见。
3. 解决方案
3.1 修改MSSQL的端口
如果MSSQL服务在监听80端口,可以通过修改其默认端口的方式解决。
首先需要打开SQL Server Configuration Manager,然后依次展开以下目录:SQL Server Network Configuration -> Protocols for MSSQLSERVER(MSSQLSERVER指的是SQL Server的实例名称)。
在这个目录中,可以找到TCP/IP协议。将其属性中的TCP动态端口改为任意非占用端口,比如1433端口。保存后,重新启动MSSQL服务,就可以重新分配端口了。
USE master
GO
EXEC sp_configure 'show advanced options', '1';
RECONFIGURE;
GO
EXEC sp_configure 'listen all', '0';
RECONFIGURE;
GO
EXEC sp_configure 'tcp port', 1433;
GO
3.2 检查IIS的端口配置
如果MSSQL服务与IIS共存,那么可以通过检查IIS的端口配置来解决MSSQL服务监听80端口的问题。
首先需要打开IIS管理器,展开Default Web Site,右键点击它,选择Edit Bindings。在这个页面中,将所有绑定的端口都修改为其他端口,比如8000端口。保存后,重新启动IIS服务,就可以重新分配端口了。
3.3 禁用HTTP.SYS
HTTP.SYS是Windows操作系统内置的HTTP处理程序,它可以为多个进程提供HTTP请求处理能力,包括IIS和MSSQL服务。如果MSSQL服务与IIS共存,那么MSSQL也可能会使用HTTP.SYS服务来绑定80端口。
为了禁用HTTP.SYS服务,需要打开注册表编辑器,找到以下项:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters\UrlAclInfo
在这个目录中,找到名为"Delete:..."的项,并将其全部删除。保存后,重新启动MSSQL服务和IIS服务,就可以重新分配端口了。
4. 总结
对于MSSQL服务监听80端口的问题,可以通过修改MSSQL的端口、检查IIS的端口配置或者禁用HTTP.SYS来解决。这个问题可能会在MSSQL与其他应用程序共存或者配置不当的情况下出现,需要注意检查和设置。