Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сводка
В этой статье приводятся решения по устранению SQL Server сбоев установки и запуска, вызванных размером сектора системного диска, превышающего поддерживаемые 4 КБ. Эти ошибки возникают, когда современные устройства хранения, такие как твердотельные накопители NVMe (SSD), сообщают о размере системного диска размером более 4 КБ. К симптомам относятся сбои при установке SQL Server, ошибки 5178 и 5179, сбой запуска ядра СУБД или дескриптора восстановления, предупреждения о несогласованных операциях ввода-вывода журнала и сбои приложения ntdll.dll. Решения применяются ко всем выпущенным версиям SQL Server, включая LocalDB.
Установка SQL Server на компьютере с размером сектора системного диска больше 4 КБ может привести к следующим сценариям.
Сценарий 1. Перемещение файла в том с совместимым размером сектора
При попытке использовать размер сектора больше 4 КБ вы увидите следующее сообщение об ошибке:
Error: 5179, Severity: 16, State: 1.
Cannot use file 'data file path', because it is on a volume with sector size 8192. SQL Server supports a maximum sector size of 4096 bytes. Move the file to a volume with a compatible sector size.
Сценарий 2. Не удалось найти дескриптор запуска ядра СУБД
При попытке установить экземпляр SQL Server на виртуальной машине Azure (VM) под управлением Windows установка завершается ошибкой, и при попытке запуска компонента Database Engine во время установки в журнале ошибок SQL Server появляется следующее сообщение об ошибке:
Не удается использовать файл "...\master.mdf", так как он был первоначально отформатирован с размером сектора 4096 и теперь находится на томе с размером сектора 8192. Переместите файл на том, размер сектора которого равен или меньше исходного размера сектора.
Кроме того, можно просмотреть следующие сведения в файле журнала Summary.txt в папке установки SQL Server:
Detailed results:
Feature: Database Engine Services
Status: Failed
Reason for failure: An error occurred during the setup process of the feature.
Next Step: Use the following information to resolve the error, uninstall this feature, and then run the setup process again.
Component name: SQL Server Database Engine Services Instance Features
Component error code: 0x851A0019
Error description: Could not find the Database Engine startup handle.
Для получения дополнительной информации см. статью о сбое установки SQL Server с ошибкой размера сектора на виртуальной машине Azure под управлением Windows Server 2022.
Сценарий 3. Ожидание дескриптора восстановления ядра СУБД завершилось сбоем
При установке любой версии SQL Server вы увидите следующую ошибку для компонента служб ядро СУБД SQL Server:
Feature: Database Engine Services
Status: Failed
Reason for failure: An error occurred during the setup process of the feature.
Next Step: Use the following information to resolve the error, uninstall this feature, and then run the setup process again.
Component name: SQL Server Database Engine Services Instance Features
Component error code: 0x851A001A
Error description: Wait on the Database Engine recovery handle failed. Check the SQL Server error log for potential causes.
Кроме того, в журнале ошибок SQL Server отображаются следующие ошибки:
2025-02-26 20:01:16.79 spid14s Starting up database 'master'.
2025-02-26 20:01:16.80 spid14s Error: 5178, Severity: 16, State: 1.
2025-02-26 20:01:16.80 spid14s Cannot use file 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\master.mdf' because it was originally formatted with sector size 4096 and is now on a volume with sector size 8192. Move the file to a volume with a sector size that is the same as or smaller than the original sector size.
Сценарий 4: Было 256 невыравненных операций ввода-вывода журнала, что потребовало перехода на синхронный ввод-вывод
Вы устанавливаете любую версию SQL Server на устройстве с Windows 10. Затем обновите операционную систему (ОС) на устройстве до Windows 11. При попытке запустить SQL Server на устройстве с Windows 11 служба не запускается. В журнале ошибок SQL Server вы заметите следующие записи:
2021-11-05 23:42:47.14 spid9s There have been 256 misaligned log IOs which required falling back to synchronous IO. The current IO is on file C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\master.mdf.
Сценарий 5. Ошибка приложения SQL Server из ntdll.dll
Вы устанавливаете любую версию SQL Server на устройстве с Windows 10. Затем обновите ОС на устройстве до Windows 11. При попытке запустить SQL Server на устройстве с Windows 11 служба не запускается. В журнале ошибок SQL Server вы заметите следующие записи:
Faulting application name: sqlservr.exe, version: 2019.150.2000.5, time stamp: 0x5d8a9215
Faulting module name: ntdll.dll, version: 10.0.22000.120, time stamp: 0x50702a8c
Exception code: 0xc0000005
Fault offset: 0x00000000000357ae
Faulting process id: 0x1124
Faulting application start time: 0x01d7bf67449d262c
Faulting application path: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Сценарий 6. Перемещение файла в том с размером сектора, который совпадает с размером исходного сектора или меньше исходного размера сектора.
Вы устанавливаете LocalDB на устройстве с Windows 11, и установка завершается ошибкой. В журнале ошибок SQL Server вы заметите следующие записи:
2021-12-15 23:25:04.28 spid5s Cannot use file 'C:\Users\Administrator\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\TestInstance\master.mdf' because it was originally formatted with sector size 4096 and is now on a volume with sector size 16384. Move the file to a volume with a sector size that is the same as or smaller than the original sector size.
В журнале событий приложения Windows на устройстве Windows 11 вы заметите следующие записи:
Message : Windows API call WaitForMultipleObjects returned error code: 575. Windows system error message is: {Application Error}
The application was unable to start correctly (0x%lx). Click OK to close the application.
Reported at line: 3621.
Source : SQLLocalDB 11.0
Примечание.
Вы можете столкнуться с описанными в предыдущих сценариях сбоями для экземпляра SQL Server, установленного вручную, или для экземпляра LocalDB, установленного приложениями.
Причина ошибок размера сектора диска в SQL Server
Во время запуска службы SQL Server начинает процесс восстановления базы данных, чтобы обеспечить согласованность базы данных. Часть этого процесса восстановления базы данных включает проверки согласованности в базовой файловой системе, прежде чем пытаться открыть файлы системы и пользовательской базы данных.
Некоторые новые устройства хранения и драйверы устройств предоставляют размер сектора диска, превышающий поддерживаемый размер сектора 4 КБ.
При возникновении этой проблемы SQL Server не удается запустить из-за неподдерживаемой файловой системы, так как SQL Server в настоящее время поддерживает размер хранилища сектора в 512 байтах и 4 КБ.
Вы можете подтвердить, что эта конкретная проблема возникает, выполнив команду:
fsutil fsinfo sectorinfo <volume pathname>
Например, чтобы проанализировать том E, выполните следующую команду:
fsutil fsinfo sectorinfo E:
Найдите значения PhysicalBytesPerSectorForAtomicity и PhysicalBytesPerSectorForPerformance, возвращенные в байтах. Если они отличаются, сохраните самую большую , чтобы определить размер сектора диска. Значение 4096 указывает размер хранилища сектора в 4 КБ.
Кроме того, ознакомьтесь со статьей Политика поддержки Microsoft для жестких дисков с секторами размером 4 КБ в Windows.
Примечание.
Не выпущена версия SQL Server, совместимая с размерами сектора размером более 4 КБ. Дополнительные сведения см. в статье о границах поддержки размера жесткого диска в SQL Server.
Действия по устранению ошибок размера сектора диска в SQL Server
В настоящее время
ForcedPhysicalSectorSizeInBytesключ реестра необходим для успешной установки SQL Server при использовании современных платформ хранения, таких как NVMe, которые обеспечивают размер сектора более 4 КБ. Данный ключ реестра операционной системы Windows заставляет размер сектора эмулироваться как 4 КБ.Чтобы добавить
ForcedPhysicalSectorSizeInBytesраздел реестра, используйте Редактор реестра или выполните команды, описанные в разделе Командная строка или PowerShell. Для этого сценария нет необходимости добавлять флаг трассировки 1800.Внимание
В этом разделе содержатся инструкции по изменению реестра Windows. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому убедитесь, что вы внимательно выполните следующие действия. Для дополнительной защиты создайте резервную копию реестра перед его изменением. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о резервном копировании и восстановлении реестра см . в статье о резервном копировании и восстановлении реестра в Windows .
- Запустите редактор реестра от имени администратора.
- Перейдите по адресу
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device. - Выберите Изменить>Новое>Многострочное значение и назовите его как
ForcedPhysicalSectorSizeInBytes. - Шелкните правой кнопкой мыши имя, выберите «Изменить» и введите
* 4095в поле Значение данных. - Нажмите кнопку "ОК " и закройте редактор реестра.
Чтобы это изменение вступило в силу, необходимо перезагрузить устройство после добавления ключа реестра.
Если вы не добавите ключ реестра и в вашей системе имеется несколько дисков, вы можете указать другое расположение для файлов базы данных после завершения установки SQL Server. Убедитесь, что диск отражает поддерживаемый размер сектора при запросе
fsutilкоманд. В настоящее время SQL Server поддерживает размер хранилища сектора в 512 байтах и 4096 байтах.
Осторожность
Если вы уже создали пул носителей с дисками с размером сектора, превышающим 4 КБ для размещения SQL Server файлов, необходимо сначала удалить пул носителей, применить один из методов устранения неполадок, упомянутых в этой статье, а затем перестроить пул носителей, прежде чем пытаться установить SQL Server в пуле носителей или пулах.
Дополнительная информация
Драйверы NVMe для Windows 11 были обновлены, чтобы включить фактический размер сектора, сообщаемый непосредственно устройствами хранилища NVMe. Это было сделано вместо того, чтобы полагаться на информацию, эмулируемую из драйверов файловой системы.
Windows 10 драйверы не сообщают о размере исходного сектора физического хранилища.
Улучшенные Windows 11 драйверы игнорируют эмуляцию, используемую общими устройствами хранения NVMe. В качестве примера fsutil отображает размер сектора 8 КБ или 16 КБ, вместо требуемых 4 КБ, необходимых Windows.
В следующей таблице представлено сравнение размеров сектора, сообщаемых операционными системами. В этом примере показаны различия между Windows 10 и Windows 11 с использованием одного устройства хранения. Для значений PhysicalBytesPerSectorForAtomicity и PhysicalBytesPerSectorForPerformance, Windows 10 отображает 4 КБ и Windows 11 отображает 16 КБ.
Пример выходных данных fsutil fsinfo sectorinfo <volume pathname>
| Windows 10 | Windows 11 |
|---|---|
LogicalBytesPerSector : 512 |
LogicalBytesPerSector : 512 |
PhysicalBytesPerSectorForAtomicity : 4096 |
PhysicalBytesPerSectorForAtomicity : 16384 |
PhysicalBytesPerSectorForPerformance : 4096 |
PhysicalBytesPerSectorForPerformance : 16384 |
FileSystemEffectivePhysicalBytesPerSectorForAtomicity : 4096 |
FileSystemEffectivePhysicalBytesPerSectorForAtomicity : 4096 |
Device Alignment : Aligned (0x000) |
Device Alignment : Aligned (0x000) |
Partition alignment on device : Aligned (0x000) |
Partition alignment on device : Aligned (0x000) |
No Seek Penalty |
No Seek Penalty |
Trim Supported |
Trim Supported |
Not DAX capable |
Not DAX capable |
Not Thinly-Provisioned |
Not Thinly-Provisioned |