Beheben von Fehlern im Zusammenhang mit der Größe des Systemdatenträgersektors größer als 4 KB

Dieser Artikel enthält Lösungen für die Problembehandlung von Fehlern während der Installation oder beim Starten einer instance von SQL Server unter Windows 11 und Windows Server 2022. Dieser Artikel gilt für alle veröffentlichten Versionen von SQL Server.

Die in diesem Artikel beschriebenen Fehler beziehen sich auf eine Sektorgröße des Systemdatenträgers, die größer als 4 KB ist.

Gilt für: SQL Server allen Versionen

Problembeschreibung

Szenario 1: Sie installieren eine beliebige Version von SQL Server auf einem Windows 11 Gerät. Anschließend werden Fehler ähnlich der folgenden Meldung für die Datenbank-Engine Services-Komponente von SQL Server angezeigt:

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. 

Szenario Nr. 2: Sie installieren eine beliebige Version von SQL Server auf einem Windows 10 Gerät. Anschließend aktualisieren Sie das Betriebssystem auf dem Gerät auf Windows 11. Wenn Sie versuchen, SQL Server auf einem Windows 11 Gerät zu starten, kann der Dienst nicht gestartet werden, und im SQL Server Fehlerprotokoll werden Einträge wie die folgenden angezeigt:

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. 

Szenario 3: Sie installieren eine beliebige Version von SQL Server auf einem Windows 10 Gerät. Anschließend aktualisieren Sie das Betriebssystem auf dem Gerät auf Windows 11. Wenn Sie versuchen, SQL Server auf einem Windows 11 Gerät zu starten, kann der Dienst nicht gestartet werden. Im SQL Server Fehlerprotokoll werden Einträge wie die folgenden angezeigt:

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 

Szenario 4: Sie installieren LocalDB auf einem Windows 11 Gerät. Das Setup schlägt fehl, und im SQL Server Fehlerprotokoll werden Einträge wie die folgenden angezeigt:

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.

Im Windows 11 Anwendungsereignisprotokoll werden Einträge wie die folgenden angezeigt:

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

Hinweis

Möglicherweise treten die fehler auf, die in den vorherigen Szenarien für eine SQL Server instance Sie manuell oder auf einer LocalDB-instance von Anwendungen installiert wurden.

Szenario 5: Wenn Sie versuchen, eine Sektorgröße von mehr als 4 KB zu verwenden, wird die folgende Fehlermeldung angezeigt:

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.

Ursache

Während des Dienststarts beginnt SQL Server mit der Datenbankwiederherstellung, um die Datenbankkonsistenz sicherzustellen. Ein Teil dieses Datenbankwiederherstellungsprozesses umfasst Konsistenzprüfungen im zugrunde liegenden Dateisystem, bevor Sie versuchen, System- und Benutzerdatenbankdateien zu öffnen.

Auf Systemen, auf denen Windows 11 ausgeführt wird, machen einige neue Speichergeräte und Gerätetreiber eine Datenträgersektorgröße verfügbar, die größer ist als die unterstützte Sektorgröße von 4 KB.

In diesem Fall kann SQL Server aufgrund des nicht unterstützten Dateisystems nicht gestartet werden, da SQL Server derzeit Sektorspeichergrößen von 512 Bytes und 4 KB unterstützt.

Sie können bestätigen, dass dieses spezifische Problem auftritt, indem Sie den Befehl ausführen:

fsutil fsinfo sectorinfo <volume pathname>

Führen Sie beispielsweise den folgenden Befehl aus, um das Volume E: zu analysieren:

fsutil fsinfo sectorinfo E:

Suchen Sie nach den Werten PhysicalBytesPerSectorForAtomicity und PhysicalBytesPerSectorForPerformance, die in Bytes zurückgegeben werden, und behalten Sie bei unterschiedlichen Werten den größten Wert bei, um die Größe des Datenträgersektors zu ermitteln. Der Wert 4096 gibt eine Sektorspeichergröße von 4 KB an.

Beachten Sie außerdem die Windows-Supportrichtlinie für die Unterstützung von Dateisystem- und Speichersektorgrößen. Weitere Informationen finden Sie im Artikel Microsoft-Supportrichtlinie für 4-KB-Sektorfestplatten unter Windows .

Hinweis

Es gibt keine veröffentlichte Version von SQL Server kompatibel mit Sektorgrößen größer als 4 KB. Weitere Informationen finden Sie im Artikel Zur Unterstützung von Festplattenlaufwerken für die Sektorgröße in SQL Server Artikel.

Lösungen

Microsoft untersucht derzeit dieses Problem.

Ziehen Sie eine der folgenden Lösungen in Betracht:

  • Wenn Sie über mehrere Laufwerke auf diesem System verfügen, können Sie nach Abschluss der Installation von SQL Server einen anderen Speicherort für die Datenbankdateien angeben. Stellen Sie sicher, dass das Laufwerk beim Abfragen der fsutil Befehle eine unterstützte Sektorgröße widerspiegelt. SQL Server unterstützt derzeit Sektorspeichergrößen von 512 und 4.096 Bytes.

  • Sie können einen Registrierungsschlüssel hinzufügen, der dazu führt, dass das Verhalten von Windows 11 und später dem Windows 10 ähnelt. Dadurch wird die Sektorgröße als 4 KB emuliert. Verwenden Sie zum Hinzufügen des ForcedPhysicalSectorSizeInBytes Registrierungsschlüssels den Registrierungs-Editor , oder führen Sie Befehle aus, wie im Abschnitt PowerShell als Administrator beschrieben. Sie müssen das Gerät nach dem Hinzufügen des Registrierungsschlüssels neu starten, damit diese Änderung wirksam wird.

    Wichtig

    Dieser Abschnitt enthält Schritte, mit denen Sie erfahren, wie Sie die Windows-Registrierung ändern. Durch die falsche Bearbeitung der Registrierung können schwerwiegende Probleme verursacht werden. Daher ist es wichtig, bei der Ausführung der folgenden Schritte sorgfältig vorzugehen. Für zusätzlichen Schutz sichern Sie die Registrierung, bevor Sie sie ändern. Sie können die Registrierung wiederherstellen, wenn ein Problem auftritt. Weitere Informationen zum Sichern und Wiederherstellen der Registrierung finden Sie im Artikel Sichern und Wiederherstellen der Registrierung in Windows .

    Registrierungs-Editor

    1. Navigieren Sie zu Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device.
    2. Zeigen Sie im Menü Bearbeiten auf Neu, und wählen Sie dann Multi-String-Wert aus. Nennen Sie es ForcedPhysicalSectorSizeInBytes.
    3. Ändern Sie den neuen Wert, und geben Sie ein * 4095. Wählen Sie OK aus, und schließen Sie den Registrierungs-Editor.

    Eingabeaufforderung als Administrator

    1. Fügen Sie den Schlüssel hinzu.

      REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t   REG_MULTI_SZ /d "* 4095" /f
      
    2. Überprüfen Sie, ob der Schlüssel erfolgreich hinzugefügt wurde.

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

    PowerShell als Administrator

    1. Fügen Sie den Schlüssel hinzu.

      New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString        -Force -Value "* 4095"
      
    2. Überprüfen Sie, ob der Schlüssel erfolgreich hinzugefügt wurde.

       Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes"
      
  • Sie können SQL Server starten, indem Sie das Ablaufverfolgungsflag 1800 angeben. Weitere Informationen finden Sie unter DBCC TRACEON. Dieses Ablaufverfolgungsflag ist standardmäßig nicht aktiviert. Das Ablaufverfolgungsflag 1800 zwingt SQL Server, 4 KB als Sektorgröße für alle Lese- und Schreibvorgänge zu verwenden. Wenn Sie SQL Server auf Datenträgern mit einer physischen Sektorgröße von mehr als 4 KB ausführen, simuliert die Verwendung des Ablaufverfolgungsflags 1800 ein natives 4-KB-Laufwerk, das die für SQL Server unterstützte Sektorgröße darstellt.

  • Installieren Sie SQL Server stattdessen auf verfügbaren Windows 10 Geräten.

Weitere Informationen

Windows 11 nativen NVMe-Treiber wurden aktualisiert, um die tatsächliche Sektorgröße einzuschließen, die direkt von den NVMe-Speichergeräten gemeldet wurde. Dies wurde durchgeführt, anstatt sich auf die Informationen zu verlassen, die von den Dateisystemtreibern emuliert wurden.

Die Windows 10 Treiber melden nicht die Größe des Quellsektors des physischen Speichers.

Die verbesserten Windows 11 Treiber ignorieren die Emulation, die gängige NVMe-Speichergeräte verwenden. Zeigt beispielsweise fsutil eine Sektorgröße von 8 KB oder 16 KB an, anstatt die für Windows erforderliche Sektorgröße von 4 KB zu emulieren.

Die folgende Tabelle enthält einen Vergleich der sektorspezifischen Größen, die von den Betriebssystemen gemeldet werden. In diesem Beispiel werden die Unterschiede zwischen Windows 10 und Windows 11 veranschaulicht, die dasselbe Speichergerät verwenden. Für die Werte von PhysicalBytesPerSectorForAtomicity und PhysicalBytesPerSectorForPerformancezeigt Windows 10 4 KB und Windows 11 16 KB an.

Beispielausgabe von 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

Siehe auch