Problembehandlung bei Fehlern im Zusammenhang mit der Größe des Systemdatenträgers mit einer Größe von mehr als 4 KB

Dieser Artikel enthält Lösungen zur Problembehandlung bei Fehlern während der Installation oder beim Starten SQL Server auf Windows 11 im Zusammenhang mit der Größe des Systemdatenträgers mit einer Größe von mehr als 4 KB.

Problembeschreibung

Szenario Nr. 1: Sie installieren SQL Server 2019, SQL Server 2017 oder SQL Server 2016 auf einem Windows 11 Gerät, und für die Datenbank-Engine Services-Komponente von SQL Server werden Fehler wie die folgenden 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 SQL Server 2019, SQL Server 2017 oder SQL Server 2016 auf einem Windows 10 Gerät. Anschließend aktualisieren Sie das Betriebssystem auf dem Gerät auf Windows 11. Wenn Sie versuchen, SQL Server 2019, SQL Server 2017 oder SQL Server 2016 auf einem Windows 11 Gerät zu starten, wird der Dienst nicht gestartet, 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 Nr. 3: Sie installieren SQL Server 2019, SQL Server 2017 oder SQL Server 2016 auf einem Windows 10 Gerät. Anschließend aktualisieren Sie das Betriebssystem auf dem Gerät auf Windows 11. Wenn Sie versuchen, SQL Server 2019, SQL Server 2017 oder SQL Server 2016 auf einem Windows 11 Gerät zu starten, wird der Dienst nicht gestartet. Im SQL Server Fehlerprotokoll werden Einträge wie folgt 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 Nr. 4: Sie installieren LocalDB auf einem Windows 11 Gerät. Das Setup schlägt fehl, und im SQL Server Fehlerprotokoll werden Einträge wie folgt 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 folgt 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 in den vorherigen Szenarien erwähnten Fehler für eine SQL Server Instanz auf, die Sie manuell installieren, oder auf einer LocalDB Instanz, die von Anwendungen installiert wurde.

Ursache

Während des Dienststarts beginnt SQL Server den Datenbankwiederherstellungsprozess, um die Datenbankkonsistenz sicherzustellen. Ein Teil dieses Datenbankwiederherstellungsprozesses umfasst Konsistenzprüfungen des zugrunde liegenden Dateisystems, bevor versucht wird, system- und benutzerdatenbankdateien zu öffnen.

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

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 folgenden 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 dem Wert PhysicalBytesPerSectorForAtomicity, der in Bytes zurückgegeben wird. Der Wert 4096 gibt eine Sektorspeichergröße von 4 KB an.

Beachten Sie außerdem die Windows Unterstützungsrichtlinie für die Unterstützung des Dateisystems und des Speicherbereichs. Weitere Informationen finden Sie in der Microsoft-Supportrichtlinie für Festplatten mit 4 KB Sektor in Windows Artikel.

Hinweis

Es gibt keine veröffentlichte Version von SQL Server kompatibel mit Sektorgrößen, die größer als 4 KB sind. Weitere Informationen finden Sie in den Supportbegrenzungen für Festplattenlaufwerke in SQL Server Artikel.

Lösungen

Dieses Problem wird derzeit von Microsoft untersucht.

Betrachten Sie eine der folgenden Lösungen:

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

  • Sie können einen Registrierungsschlüssel hinzufügen, der dazu führt, dass das Verhalten von Windows 11 und höher Windows 10 ähnelt. Dadurch wird erzwungen, dass die Sektorgröße als Größe von 4 KB emuliert wird. Um den ForcedPhysicalSectorSizeInBytes Registrierungsschlüssel hinzuzufügen, verwenden Sie den Registrierungs-Editor, oder Sie können einen der folgenden Befehle in Windows Eingabeaufforderung oder PowerShell ausführen, die als Administrator ausgeführt 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 unter "Sichern und Wiederherstellen der Registrierung" in Windows Artikel.

    Registrierungs-Editor

    1. Navigieren Sie zu Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device.
    2. On the Edit menu, point to New, and then select Multi-String value. Nennen Sie es ForcedPhysicalSectorSizeInBytes.
    3. Ändern Sie den neuen Wert, geben Sie in * 4095. Klicken Sie auf "OK ", 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
    
    1. Ü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"
    
    1. Ü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 Ablaufverfolgungs-Flag ist nicht standardmäßig aktiviert. Die Ablaufverfolgungskennzeichnung 1800 erzwingt, dass SQL Server 4 KB als Sektorgröße für alle Lese- und Schreibvorgänge verwendet. Wenn Sie SQL Server auf Datenträgern mit einer Physischen Sektorgröße von mehr als 4 KB ausführen, simuliert die Verwendung des Ablaufverfolgungskennzeichens 1800 ein systemeigenes Laufwerk mit 4 KB, das die unterstützte Sektorgröße für SQL Server ist.

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

Weitere Informationen

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

Die Windows 10-Treiber geben die Größe des physischen Speichers im Quellsektor nicht an.

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 erforderliche Sektorgröße von 4 KB zu emulieren, die von Windows benötigt wird.

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 mit demselben Speichergerät veranschaulicht. Für den Wert von PhysicalBytesPerSectorForAtomicityzeigt 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