Rozwiązywanie problemów z błędami związanymi z rozmiarem sektora dysku systemowego większym niż 4 KB
Ten artykuł zawiera rozwiązania dotyczące rozwiązywania problemów z błędami podczas instalacji lub uruchamiania wystąpienia SQL Server w systemach Windows 11 i Windows Server 2022. Ten artykuł jest prawidłowy dla wszystkich wydanych wersji SQL Server.
Błędy omówione w tym artykule są związane z rozmiarem sektora dysków systemowych większym niż 4 KB.
Dotyczy: SQL Server wszystkich wersji
Symptomy
Scenariusz nr 1: Na urządzeniu Windows 11 instalujesz dowolną wersję SQL Server. Następnie zobaczysz błędy podobne do następującego komunikatu dla składnika usługi Database Engine Services 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.
Scenariusz nr 2: Na urządzeniu Windows 10 instalujesz dowolną wersję SQL Server. Następnie uaktualnisz system operacyjny na urządzeniu do Windows 11. Podczas próby uruchomienia SQL Server na urządzeniu Windows 11 nie można uruchomić usługi i w dzienniku błędów SQL Server zauważysz wpisy podobne do następujących:
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.
Scenariusz nr 3: Na urządzeniu Windows 10 instalujesz dowolną wersję SQL Server. Następnie uaktualnisz system operacyjny na urządzeniu do Windows 11. Podczas próby uruchomienia SQL Server na urządzeniu Windows 11 nie można uruchomić usługi. W dzienniku błędów SQL Server zauważysz wpisy podobne do następujących:
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
Scenariusz nr 4: Baza danych LocalDB jest instalowana na urządzeniu Windows 11. Instalacja kończy się niepowodzeniem i w dzienniku błędów SQL Server zauważysz wpisy podobne do następujących:
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.
W dzienniku zdarzeń aplikacji Windows 11 zauważysz wpisy podobne do następujących:
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
Uwaga
Mogą wystąpić błędy wymienione w poprzednich scenariuszach dla wystąpienia SQL Server zainstalowanego ręcznie lub w wystąpieniu bazy danych LocalDB zainstalowanym przez aplikacje.
Scenariusz nr 5: Jeśli spróbujesz użyć rozmiaru sektora wyższego niż 4 KB, zostanie wyświetlony następujący komunikat o błędzie:
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.
Przyczyna
Podczas uruchamiania usługi SQL Server rozpoczyna proces odzyskiwania bazy danych w celu zapewnienia spójności bazy danych. Część tego procesu odzyskiwania bazy danych obejmuje sprawdzanie spójności bazowego systemu plików przed próbą otwarcia plików systemu i bazy danych użytkownika.
W systemach z systemem Windows 11 niektóre nowe urządzenia magazynujące i sterowniki urządzeń uwidaczniają rozmiar sektora dysku większy niż obsługiwany rozmiar sektora 4 KB.
W takim przypadku SQL Server nie będzie można uruchomić z powodu nieobsługiwanego systemu plików, ponieważ SQL Server obecnie obsługuje rozmiary magazynu sektorowego 512 bajtów i 4 KB.
Możesz potwierdzić, że napotkasz ten konkretny problem, uruchamiając polecenie:
fsutil fsinfo sectorinfo <volume pathname>
Aby na przykład przeanalizować wolumin E: , uruchom następujące polecenie:
fsutil fsinfo sectorinfo E:
Poszukaj wartości i PhysicalBytesPerSectorForPerformance
, zwróconych PhysicalBytesPerSectorForAtomicity
w bajtach, a jeśli są różne, zachowaj największą wartość, aby ustalić rozmiar sektora dysku. Wartość 4096 wskazuje rozmiar magazynu sektorowego wynoszący 4 KB.
Ponadto należy pamiętać o zasadach obsługi systemu Windows dla obsługi systemu plików i rozmiaru sektora magazynu. Aby uzyskać więcej informacji, zobacz artykuł Zasady pomocy technicznej firmy Microsoft dla dysków twardych w sektorze 4 KB w systemie Windows .
Uwaga
Nie ma wydanej wersji SQL Server zgodnej z rozmiarami sektorów większymi niż 4 KB. Aby uzyskać więcej informacji, zobacz granice obsługi rozmiaru sektora dysku twardego w artykule SQL Server.
Rozwiązania
Firma Microsoft obecnie bada ten problem.
Rozważmy jedno z następujących rozwiązań:
Jeśli masz wiele dysków w tym systemie, możesz określić inną lokalizację plików bazy danych po zakończeniu instalacji SQL Server. Upewnij się, że dysk odzwierciedla obsługiwany rozmiar sektora podczas wykonywania zapytań dotyczących
fsutil
poleceń. SQL Server obecnie obsługuje rozmiary magazynów sektorowych 512 bajtów i 4096 bajtów.Możesz dodać klucz rejestru, co spowoduje, że zachowanie Windows 11 i później będzie podobne do Windows 10. Wymusza to emulację rozmiaru sektora jako 4 KB. Aby dodać
ForcedPhysicalSectorSizeInBytes
klucz rejestru, użyj Redaktor rejestru lub uruchom polecenia zgodnie z opisem w sekcji Programu PowerShell jako administrator. Aby ta zmiana została wprowadzona, należy ponownie uruchomić urządzenie po dodaniu klucza rejestru.Ważna
Ta sekcja zawiera kroki, które informują o sposobie modyfikowania rejestru systemu Windows. Niepoprawne zmodyfikowanie rejestru może jednak być przyczyną poważnych problemów. Dlatego należy uważnie wykonywać podane czynności. Dla większego bezpieczeństwa przed zmodyfikowaniem rejestru należy wykonać jego kopię zapasową. Dzięki temu będzie można przywrócić rejestr w przypadku wystąpienia problemu. Aby uzyskać więcej informacji na temat tworzenia kopii zapasowej i przywracania rejestru, zobacz artykuł Jak utworzyć kopię zapasową i przywrócić rejestr w systemie Windows .
- Przejdź do
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device
. - W menu Edytuj wskaż pozycję Nowy, a następnie wybierz pozycję Wartość wielociągowa. Nadaj mu
ForcedPhysicalSectorSizeInBytes
nazwę . - Zmodyfikuj nową wartość, wpisz ciąg .
* 4095
Wybierz przycisk OK i zamknij edytor rejestru.
Wiersz polecenia jako administrator
Dodaj klucz.
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t REG_MULTI_SZ /d "* 4095" /f
Sprawdź, czy klucz został dodany pomyślnie.
REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes"
Program PowerShell jako administrator
Dodaj klucz.
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString -Force -Value "* 4095"
Sprawdź, czy klucz został dodany pomyślnie.
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name "ForcedPhysicalSectorSizeInBytes"
- Przejdź do
Możesz rozpocząć SQL Server, określając flagę śledzenia 1800. Aby uzyskać więcej informacji, zobacz DBCC TRACEON. Ta flaga śledzenia nie jest domyślnie włączona. Flaga śledzenia 1800 wymusza SQL Server użycie 4 KB jako rozmiaru sektora dla wszystkich operacji odczytu i zapisu. Jeśli używasz SQL Server na dyskach o rozmiarze sektora fizycznego większym niż 4 KB, użycie flagi śledzenia 1800 zasymuluje natywny dysk o rozmiarze 4 KB, który jest obsługiwanym rozmiarem sektora dla SQL Server.
Zamiast tego zainstaluj SQL Server na dostępnych urządzeniach Windows 10.
Więcej informacji
Windows 11 sterowniki NVMe natywne zostały zaktualizowane w celu uwzględnienia rzeczywistego rozmiaru sektora zgłoszonego bezpośrednio przez urządzenia magazynujące NVMe. Zostało to zrobione zamiast polegać na informacjach, które są emulowane ze sterowników systemu plików.
Sterowniki Windows 10 nie zgłaszają rozmiaru sektora źródłowego magazynu fizycznego.
Ulepszone sterowniki Windows 11 nie uwzględniają emulacji używanej przez typowe urządzenia magazynujące NVMe. Na przykład fsutil
wyświetla rozmiar sektora 8 KB lub 16 KB, zamiast emulowania wymaganego rozmiaru sektora 4 KB wymaganego przez system Windows.
Poniższa tabela zawiera porównanie rozmiarów sektorów zgłoszonych przez systemy operacyjne. W tym przykładzie przedstawiono różnice między Windows 10 i Windows 11 przy użyciu tego samego urządzenia magazynu. Dla wartości i PhysicalBytesPerSectorForAtomicity
PhysicalBytesPerSectorForPerformance
, Windows 10 wyświetla 4 KB i Windows 11 wyświetla 16 KB.
Przykładowe dane wyjściowe 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 |
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla