升级三星固态硬盘能导致SQL Server不能启动,连重装都失败了,4K扇区大小影响有点大
问题
有一段时间没用了VS2022了,今天把它升级到17.12,然后打开项目发现localdb不能用了,启动不起来。
Win11 24H2
SQL Server LocalDb 2019
Visual Studio 2022 17.12
C:\Windows\System32>sqllocaldb delete localDB1
LocalDB instance "localDB1" deleted.
C:\Windows\System32>sqllocaldb create localDB1
Creation of LocalDB instance "localDB1" failed because of the following error: Error occurred during LocalDB instance startup: SQL Server process failed to start.
寻找原因
搜索了下,又问了下AI都没有结果。看了下localdb的版本还是2019,并未升级,不应该啊。
卸载现有的2019,然后重新安装2019. 问题依旧。
下载安装sql server express 2019,竟然安装失败。
找到了有人因三星固态硬盘的4K扇区尺寸4096和微软默认值不通导致的无法启动。联想我的电脑刚升级了三星的980nvme m.2固态硬盘,还真是。
解决办法
修改注册表强制指定4K扇区大小:
打开注册表编辑器 (regedit.exe).
找到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device.
增加一个多字符串值:ForcedPhysicalSectorSizeInBytes.
值设为: * 4096 (不是 * 4095 这个微软建议值).
重启计算机,Localdb工作正常了。
相关链接
https://www.500599.xyz/posts/db/sql-server-can-not-start/