Press "Enter" to skip to content

SQL Server nie chce się zainstalować na Windows 11? Sprawdź rozmiar sektora dysku

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Ta strona używa Akismet do redukcji spamu. Dowiedz się, w jaki sposób przetwarzane są dane Twoich komentarzy.