Podczas instalacji SQL Server 2025 na Windows 11 trafiłam na dość nieoczywisty problem. Instalator dochodził prawie do końca, ale Database Engine Services nie chciał się poprawnie zainstalować.
W logu pojawił się między innymi błąd:
0x851A001A
Wait on the Database Engine recovery handle failed.
Check the SQL Server error log for potential causes.
W moim przypadku nie był to problem z uprawnieniami, firewallem ani konfiguracją konta usługi. Przyczyną okazał się sposób, w jaki Windows raportował rozmiar fizycznego sektora dysku NVMe.
SQL Server obsługuje obecnie sektory o rozmiarze 512 B oraz 4096 B. Na części nowoczesnych dysków NVMe Windows może jednak raportować większą wartość, np. 16 KB, 32 KB albo 64 KB. W takiej sytuacji silnik SQL Server może nie być w stanie poprawnie wystartować podczas instalacji. Microsoft opisuje ten problem i oficjalny workaround w swojej dokumentacji.
1. Jak wygląda problem?
W moim przypadku instalacja kończyła się błędem dla:
Database Engine Services
Full-Text and Semantic Extractions for Search
natomiast inne składniki, np. Analysis Services, instalowały się poprawnie.
W logu instalatora znajdował się komunikat:
Wait on the Database Engine recovery handle failed.
oraz ostrzeżenie:
LargeSectorSizeCheck
One or more disks intended for SQL Server data have
a physical sector size greater than 4 KB.
To właśnie ten drugi komunikat okazał się kluczowy.
2. Sprawdź rozmiar sektora swojego dysku
Uruchom CMD jako administrator i wykonaj:
fsutil fsinfo sectorinfo C:
Jeśli SQL Server ma być instalowany na innym dysku, zamiast C: podaj jego literę.
Najważniejsze są dwie wartości:
PhysicalBytesPerSectorForAtomicity
PhysicalBytesPerSectorForPerformance
Microsoft zaleca, aby jeśli wartości są różne, brać pod uwagę większą z nich. Wartość 4096 oznacza sektor 4 KB.
W moim przypadku początkowo wynik wyglądał tak:
LogicalBytesPerSector : 512
PhysicalBytesPerSectorForAtomicity : 4096
PhysicalBytesPerSectorForPerformance : 65536
FileSystemEffectivePhysicalBytesPerSectorForAtomicity : 4096
Czyli Windows raportował dla wydajności:
65536 B
czyli aż:
64 KB
To jest wartość nieobsługiwana przez SQL Server.
Jeżeli u Ciebie obie wartości wynoszą 4096 lub mniej, nie stosuj poniższego workaroundu w ciemno — problem może mieć inną przyczynę.
3. Zrób kopię ustawień rejestru
Ponieważ rozwiązanie wymaga zmiany w rejestrze Windows, przed modyfikacją warto zrobić kopię odpowiedniego klucza.
Uruchom CMD jako administrator:
reg export "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" "%USERPROFILE%\Desktop\stornvme-backup.reg"
Microsoft również zaleca zachowanie ostrożności przy modyfikowaniu rejestru i wykonanie kopii zapasowej przed zmianami.
4. Dodaj workaround dla dysku NVMe
Następnie, nadal w CMD uruchomionym jako administrator, wykonaj:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t REG_MULTI_SZ /d "* 4095" /f
Ten wpis powoduje, że Windows emuluje dla sterownika NVMe rozmiar sektora zgodny z 4 KB.
Jest to workaround opisany oficjalnie przez Microsoft dla współczesnych urządzeń magazynujących, które raportują sektor większy niż 4 KB.
Można od razu sprawdzić, czy wpis został dodany:
REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes"
Powinna pojawić się wartość zawierająca:
* 4095
5. Uruchom komputer ponownie
To ważne: sama zmiana w rejestrze nie wystarczy.
Microsoft wymaga restartu systemu, aby ustawienie zaczęło obowiązywać.
Po restarcie ponownie uruchom:
fsutil fsinfo sectorinfo C:
W moim przypadku po zastosowaniu zmiany wynik wyglądał już tak:
LogicalBytesPerSector : 512
PhysicalBytesPerSectorForAtomicity : 4096
PhysicalBytesPerSectorForPerformance : 4096
FileSystemEffectivePhysicalBytesPerSectorForAtomicity : 4096
Czyli problematyczne:
65536
zostało zastąpione przez:
4096
i dysk był już raportowany w sposób zgodny z wymaganiami SQL Servera.
6. Usuń niedokończoną instalację SQL Servera
Jeżeli instalacja SQL Servera wcześniej się nie udała, może pozostać niedokończona instancja.
Najbezpieczniej usunąć ją przez instalator SQL Servera.
Uruchom:
SQL Server Installation Center
następnie przejdź do:
Maintenance
→ Remove
i wybierz niedokończoną instancję, najczęściej:
MSSQLSERVER
Usuń przede wszystkim składniki, które wcześniej zakończyły się błędem, np.:
Database Engine Services
Full-Text Search
Nie trzeba usuwać składników, które zainstalowały się poprawnie, jeśli nie są zależne od uszkodzonej instalacji.
W moim przypadku Analysis Services zainstalował się prawidłowo, więc nie było potrzeby go usuwać.
Po usunięciu niedokończonej instancji warto ponownie uruchomić komputer.
7. Ponownie uruchom instalację SQL Servera
Teraz można ponownie uruchomić instalator SQL Servera, najlepiej jako administrator.
Po naprawieniu raportowanego rozmiaru sektora Database Engine powinien być już w stanie poprawnie się uruchomić.
8. Po instalacji sprawdź usługę SQL Server
Po zakończeniu instalacji można otworzyć:
services.msc
i sprawdzić, czy działa usługa:
SQL Server (MSSQLSERVER)
Jeżeli korzystasz z domyślnej instancji, w SSMS możesz spróbować połączyć się z:
localhost
albo:
.
Podsumowanie
Jeżeli SQL Server na Windows 11 kończy instalację błędem:
Wait on the Database Engine recovery handle failed
0x851A001A
warto sprawdzić rozmiar sektora dysku:
fsutil fsinfo sectorinfo C:
Jeżeli:
PhysicalBytesPerSectorForPerformance
wynosi więcej niż:
4096
to problem może wynikać właśnie z nowoczesnego dysku NVMe raportującego sektor większy niż obsługiwany przez SQL Server.
Wtedy rozwiązaniem może być oficjalny workaround Microsoftu:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t REG_MULTI_SZ /d "* 4095" /f
następnie:
restart systemu
i ponowne sprawdzenie:
fsutil fsinfo sectorinfo C:
Jeżeli po restarcie zobaczymy:
PhysicalBytesPerSectorForAtomicity : 4096
PhysicalBytesPerSectorForPerformance : 4096
można usunąć niedokończoną instancję SQL Servera i ponowić instalację.
Be First to Comment