赞
踩
问题描述
因为要用到数据库,昨天打开
Microsoft SQL Server Management Studio
,发现登录不上数据库,后面发现
Sql Server Configuration Manager
中的SQL Server服务
中的SQL Server (MSSQLSERVER)
已停止,没有启动,然后点击启动的时候发现启动不了。
图1-1
发现报的错误是以一种访问权限不允许的方式做了一个访问套接字的尝试,如上图1-1所示
进入C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Log
文件夹中找到ERRORLOG
文件,用文本编辑器打开
图2-1
如图2-1所示,发现Server TCP provider failed to listen on [ 'any' <ipv6> 1433]. Tcp port is already in use.
错误。
原因是端口被占用;
CMD
终端查看netsh int ipv4 show excludedportrange protocol=tcp
在cmd
中输入以上指令,查看协议tcp
端口排除范围,可以查看当前所有已经被征用了的端口
netsh int ipv4 show dynamicport tcp
查看协议tcp
动态端口范围,这只是一个「待选择」范围,并不代表其中的所有端口都会被保留
如果以上的开始至结束的范围包含数据库1433端口,就需要进行动态修改
CMD
终端中修改net int ipv4 set dynamic tcp start=49152 num=16384
net int ipv6 set dynamic tcp start=49152 num=16384
然后会提示确定
,重启电脑
再次查看如下图4-1所示
图4-1
进行以上操作后,然后再次打开Sql Server Configuration Manager
中的SQL Server服务
中的SQL Server (MSSQLSERVER)
就可以正常启动了。
由于Windows 11
中其它软件需要用到 Hyper-V
,端口被随机保留(占用),导致数据库服务不能正常开启。而且随机保留后,哪怕将Hyper-V
功能在控制面板\程序\程序和功能\启用或关闭Windows功能
中关闭后,依然不能解决问题,对此另一台正常的电脑同样安装了此功能却没有出现此类问题,导致走了不少弯路。
冷知识:
1、Windows 中有一个「TCP 动态端口范围」,处在这个范围内的端口,有时候会被一些服务占用。在 Windows Vista(或 Windows Server 2008)之前,动态端口范围是 1025 到 5000;在 Windows Vista(或 Windows Server 2008)之后,新的默认起始端口为 49152,新的默认结束端口为 65535。
2、如果安装了 Hyper-V,那么 Hyper-V 会为容器宿主网络服务(Windows Container Host Networking Service)随机保留一些端口号使用。
netstat -ano
查看端口被什么程序占用,此命令不显示被系统保留不让用的端口
被系统保留不让用的端口,如果使用,也会提示被占用
netstat -nao | findstr "1433"
可以查看占用的端口的进程号
端口
被系统保留不让用的端口,如果使用,也会提示被占用
netstat -nao | findstr "1433"
可以查看占用的端口的进程号
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。