前言
升级WIN11过后遇到的第一个问题时SQL Server的服务无法启动,手动去开启服务提示:“请求失败或服务未及时响应 有关详细信息”,单单看这个弹窗的话看不到该怎么解决,直接把这个信息拿去搜索都有点扯,打开windows的事件管理器可以发现每次启动SQLServer的服务都会有一个错误信息:无法使用文件 ‘C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\mastlog.ldf’,因为最初格式化此文件时所用扇区大小为 4096,而目前所在卷的扇区大小为 16384。请将此文件移到其扇区大小小于或等于原始扇区大小的卷。
正文
经过查询得知这个问题是由磁盘的扇区大小引起的。
在服务启动期间,SQL Server 会启动数据库恢复过程以确保数据库的一致性。此数据库恢复过程的一部分涉及在尝试打开系统和用户数据库文件的活动之前对底层文件系统进行一致性检查。
在运行 Windows 11 的系统上,一些新的存储设备和设备驱动程序将公开一个大于支持的 4 KB 扇区大小的磁盘扇区大小。发生这种情况时,由于文件系统不受支持,SQL Server 将无法启动,因为 SQL Server 当前支持 512 字节和 4 KB 的扇区存储大小。
可以通过运行以下命令来确认您是否遇到了此特定问题:
fsutil fsinfo sectorinfo C:
查找值 PhysicalBytesPerSectorForAtomicity,以字节为单位返回。返回值 4096 表示扇区存储大小为 4 KB,我这边返回的数值是16384,所以很明显,问题就是它了。
以下三种方法任选一种即可
可以通过添加一个注册表项将 Windows 11 及更高版本操作系统的行为类似于 Windows 10。这将强制把扇区大小模拟为 4 KB 大小。要添加 ForcedPhysicalSectorSizeInBytes 注册表项,请使用注册表编辑器(win+R,运行regedit),另外也可以在 Windows 命令提示符或 PowerShell 中以管理员身份运行命令
1、打开注册表编辑器手动添加
2、以管理员身份运行命令提示符 添加注册表
REG ADD"HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device"/v"ForcedPhysicalSectorSizeInBytes"/t REG_MULTI_SZ /d"* 4095"/f
验证是否已成功添加注册表
REG QUERY"HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device"/v"ForcedPhysicalSectorSizeInBytes"
3、以管理员身份运行PowerShell 添加注册表
New-ItemProperty -Path"HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device"-Name"ForcedPhysicalSectorSizeInBytes"-PropertyType MultiString -Force -Value"* 4095"
验证是否已成功添加注册表
Get-ItemProperty -Path"HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device"-Name"ForcedPhysicalSectorSizeInBytes"
验证扇区大小
sutil fsinfo sectorinfo C:
文章名称:《更新WIN11之后SQLSERVER服务无法启动》
文章链接: https://www.sgtms.com/shorthand/135.html
本站资源仅供个人学习交流,转载或者引用本文内容请注明来源及作者,不允许用于商业用途。
网友评论抢沙发