Udostępnij za pośrednictwem


Rozwiązywanie problemów z błędami związanymi z rozmiarem sektora dysku systemowego większym niż 4 KB

Ten artykuł zawiera rozwiązania do rozwiązywania problemów z błędami podczas instalacji lub uruchamiania wystąpienia programu SQL Server w systemach Windows 11 i Windows Server 2022. Ten artykuł jest prawidłowy dla wszystkich wydanych wersji programu SQL Server.

Błędy omówione w tym artykule są związane z rozmiarem sektora dysku systemowego większym niż 4 KB.

Dotyczy: wszystkie wersje programu SQL Server

Symptomy

Scenariusz nr 1: Zainstaluj dowolną wersję programu SQL Server na urządzeniu z systemem Windows 11. Następnie zostaną wyświetlone błędy podobne do następującego komunikatu dla składnika usług aparatu bazy danych programu 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: Zainstaluj dowolną wersję programu SQL Server na urządzeniu z systemem Windows 10. Następnie uaktualnisz system operacyjny na urządzeniu do systemu Windows 11. Podczas próby uruchomienia programu SQL Server na urządzeniu z systemem Windows 11 nie można uruchomić usługi i w dzienniku błędów programu SQL Server zauważysz wpisy podobne do:

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: Zainstaluj dowolną wersję programu SQL Server na urządzeniu z systemem Windows 10. Następnie uaktualnisz system operacyjny na urządzeniu do systemu Windows 11. Podczas próby uruchomienia programu SQL Server na urządzeniu z systemem Windows 11 uruchomienie usługi kończy się niepowodzeniem. W dzienniku błędów programu SQL Server są wyświetlane 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: Zainstaluj bazę danych LocalDB na urządzeniu z systemem Windows 11. Instalacja kończy się niepowodzeniem i w dzienniku błędów programu SQL Server są wyświetlane 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 systemu Windows 11 są wyświetlane wpisy podobne do:

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 16.

Mogą wystąpić błędy wymienione w poprzednich scenariuszach dla wystąpienia programu SQL Server zainstalowanego ręcznie lub w wystąpieniu bazy danych LocalDB zainstalowanym przez aplikacje.

Scenariusz 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 program SQL Server rozpoczyna proces odzyskiwania bazy danych, aby zapewnić spójność bazy danych. Część tego procesu odzyskiwania bazy danych obejmuje sprawdzanie spójności w bazowym systemie plików przed próbą otwarcia plików systemowych i plików bazy danych użytkownika.

W systemach z systemem Windows 11 niektóre nowe urządzenia magazynujące i sterowniki urządzeń uwidacznia rozmiar sektora dysków większy niż obsługiwany rozmiar sektora 4 KB.

W takim przypadku program SQL Server nie będzie mógł uruchomić się z powodu nieobsługiwanego systemu plików, ponieważ program SQL Server obecnie obsługuje rozmiary magazynu sektora o rozmiarach 512 bajtów i 4 KB.

Możesz potwierdzić, że wystąpi 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 PhysicalBytesPerSectorForAtomicity i PhysicalBytesPerSectorForPerformance, zwróconych w bajtach, a jeśli są różne, zachowaj największą wartość, aby ustalić rozmiar sektora dysku. Wartość 4096 wskazuje rozmiar magazynu sektora o rozmiarze 4 KB.

Ponadto należy pamiętać o zasadach obsługi systemu Windows dla obsługi systemu plików i sektora magazynu. Aby uzyskać więcej informacji, zobacz zasady pomocy technicznej firmy Microsoft dotyczące dysków twardych z sektora 4 KB w systemie Windows .

Uwaga 16.

Nie ma wydanej wersji programu SQL Server zgodnej z rozmiarami sektorów większymi niż 4 KB. Aby uzyskać więcej informacji, zobacz granice obsługi rozmiaru dysku twardego w programie SQL Server .

Rozwiązania

Firma Microsoft obecnie bada ten problem.

Rozważ jedno z następujących rozwiązań:

  • Jeśli masz wiele dysków w tym systemie, możesz określić inną lokalizację dla plików bazy danych po zakończeniu instalacji programu SQL Server. Upewnij się, że dysk odzwierciedla obsługiwany rozmiar sektora podczas wykonywania zapytań dotyczących fsutil poleceń. Program SQL Server obsługuje obecnie rozmiary magazynu sektora 512 bajtów i 4096 bajtów.

  • Można dodać klucz rejestru, co spowoduje zachowanie systemu Windows 11 lub nowszego w podobny sposób do systemu Windows 10. Wymusza to emulowanie rozmiaru sektora jako 4 KB. Aby dodać ForcedPhysicalSectorSizeInBytes klucz rejestru, użyj Edytora rejestru lub uruchom polecenia zgodnie z opisem w sekcji PowerShell jako administrator . Aby ta zmiana weszła w życie, należy ponownie uruchomić urządzenie po dodaniu klucza rejestru.

    Ważne

    Ta sekcja zawiera kroki, które informują o sposobie modyfikowania rejestru systemu Windows. Nieprawidłowe modyfikacje rejestru mogą jednak spowodować poważne problemy. Dlatego należy uważnie wykonać poniższe kroki. Aby zapewnić dodatkową ochronę, utwórz kopię zapasową rejestru przed przystąpieniem do jego modyfikacji. 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 .

    Edytor rejestru

    1. Przejdź do Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device.
    2. W menu Edycja wskaż pozycję Nowy, a następnie wybierz pozycję Wielociągowa wartość. Nazwij go ForcedPhysicalSectorSizeInBytes.
    3. Zmodyfikuj nową wartość, wpisz ciąg .* 4095 Wybierz przycisk OK i zamknij edytor rejestru.

    Wiersz polecenia jako administrator

    1. Dodaj klucz.

      REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t   REG_MULTI_SZ /d "* 4095" /f
      
    2. Sprawdź, czy klucz został dodany pomyślnie.

      REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes"
      

    Program PowerShell jako administrator

    1. Dodaj klucz.

      New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString        -Force -Value "* 4095"
      
    2. Sprawdź, czy klucz został dodany pomyślnie.

       Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes"
      
  • Program SQL Server można uruchomić, 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 użycie programu SQL Server 4 KB jako rozmiaru sektora dla wszystkich operacji odczytu i zapisu. Jeśli używasz programu SQL Server na dyskach o rozmiarze sektora fizycznego większym niż 4 KB, użycie flagi śledzenia 1800 symuluje natywny dysk o rozmiarze 4 KB, który jest obsługiwanym rozmiarem sektora dla programu SQL Server.

  • Zainstaluj program SQL Server na dostępnych urządzeniach z systemem Windows 10.

Więcej informacji

Zaktualizowano natywne sterowniki NVMe systemu Windows 11 w celu uwzględnienia rzeczywistego rozmiaru sektora zgłaszanego bezpośrednio przez urządzenia magazynujące NVMe. Zostało to zrobione zamiast polegać na informacjach emulowanych ze sterowników systemu plików.

Sterowniki systemu Windows 10 nie zgłaszają rozmiaru sektora źródłowego magazynu fizycznego.

Ulepszone sterowniki systemu Windows 11 ignorują emulację, z których korzystają typowe urządzenia magazynujące NVMe. Na przykład fsutil wyświetla rozmiar sektora o rozmiarze 8 KB lub 16 KB, zamiast emulować wymagany rozmiar sektora 4 KB wymagany przez system Windows.

W poniższej tabeli przedstawiono porównanie rozmiarów sektorów zgłoszonych przez systemy operacyjne. W tym przykładzie przedstawiono różnice między systemami Windows 10 i Windows 11 przy użyciu tego samego urządzenia magazynowego. W przypadku wartości PhysicalBytesPerSectorForAtomicity i PhysicalBytesPerSectorForPerformancesystem Windows 10 wyświetla 4 KB, a system Windows 11 wyświetla 16 KB.

Przykładowe dane wyjściowe polecenia 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ż