Freigeben über


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 bei der Installation oder beim Starten einer Instanz von SQL Server unter Windows 11 und Windows Server 2022. Dieser Artikel ist für alle veröffentlichten Versionen von SQL Server gültig.

Die in diesem Artikel beschriebenen Fehler beziehen sich auf die Größe des Systemdatenträgersektors, die größer als 4 KB sind.

Gilt für: SQL Server alle Versionen

Problembeschreibung

Szenario Nr. 1: Sie installieren eine beliebige Version von SQL Server auf einem Windows 11-Gerät. Anschließend werden Fehler wie die folgende Meldung für die komponente Datenbank-Engine Services 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 Die Einträge ähnlich wie:

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 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 sehen Sie Einträge ähnlich wie:

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 sehen Sie Einträge ähnlich wie:

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 Ereignisprotokoll für Windows 11-Anwendungen werden Einträge wie die folgenden aufgeführt:

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

Notiz

Möglicherweise treten die in den vorherigen Szenarien erwähnten Fehler für eine SQL Server-Instanz auf, die Sie manuell oder auf einer von Anwendungen installierten LocalDB-Instanz installiert haben.

Szenario Nr. 5: Wenn Sie versuchen, die Sektorgröße höher 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 dem Datenbankwiederherstellungsprozess, um die Datenbankkonsistenz sicherzustellen. Ein Teil dieses Datenbankwiederherstellungsprozesses umfasst Konsistenzüberprüfungen des zugrunde liegenden Dateisystems, bevor Sie versuchen, System- und Benutzerdatenbankdateien zu öffnen.

Auf Systemen mit Windows 11 machen einige neue Speichergeräte und Gerätetreiber eine Datenträgersektorgröße größer als die unterstützte Größe des 4-KB-Sektors verfügbar.

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

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

fsutil fsinfo sectorinfo <volume pathname>

Um z. B. das Volume E: zu analysieren, führen Sie den folgenden Befehl aus:

fsutil fsinfo sectorinfo E:

Suchen Sie nach den Werten PhysicalBytesPerSectorForAtomicity und PhysicalBytesPerSectorForPerformance, die in Byte 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 dateisystem- und Speichersektorgrößenunterstützung. Weitere Informationen finden Sie in der Microsoft-Supportrichtlinie für 4-KB-Sektorfestlaufwerke in Windows.For more information, see the Microsoft support policy for 4-KB sector hard drives in Windows article.

Notiz

Es gibt keine veröffentlichte Version von SQL Server, die mit Branchengrößen kompatibel ist, die größer als 4 KB sind. Weitere Informationen finden Sie im Sql Server-Artikel zur Unterstützung von Festplattenlaufwerken in der Größe der Festplatte.

Auflösungen

Microsoft untersucht derzeit dieses Problem.

Betrachten Sie eine der folgenden Lösungen:

  • 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 Branchenspeichergrößen von 512 Bytes und 4096 Bytes.

  • Sie können einen Registrierungsschlüssel hinzufügen, wodurch das Verhalten von Windows 11 und höher mit Windows 10 vergleichbar ist. Dadurch wird die Größe des Sektors als 4 KB emuliert. Um den ForcedPhysicalSectorSizeInBytes Registrierungsschlüssel hinzuzufügen, verwenden Sie den Registrierungs-Editor , oder führen Sie Befehle aus, wie im Abschnitt "PowerShell als Administrator" beschrieben. Sie müssen das Gerät neu starten, nachdem Sie den Registrierungsschlüssel hinzugefügt haben, damit diese Änderung wirksam wird.

    Wichtig

    Dieser Abschnitt enthält Schritte, mit denen Sie erfahren, wie Sie die Windows-Registrierung ändern. es können jedoch schwerwiegende Probleme auftreten, wenn Sie die Registrierung nicht ordnungsgemäß ändern. Daher müssen Sie sicherstellen, dass Sie diese Schritte sorgfältig ausführen. Für weiteren Schutz sichern Sie die Registrierung, bevor Sie sie ändern. Anschließend können Sie die Registrierung wiederherstellen, wenn ein Problem auftritt. Weitere Informationen zum Sichern und Wiederherstellen der Registrierung finden Sie im Artikel zum 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 "Mehrfachzeichenfolgenwert" aus. Nenne es ForcedPhysicalSectorSizeInBytes.
    3. Ändern Sie den neuen Wert, geben Sie folgendes 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 Ablaufverfolgungskennzeichnung 1800 angeben. Weitere Informationen finden Sie unter DBCC TRACEON. Diese Ablaufverfolgungskennzeichnung ist standardmäßig nicht aktiviert. Die Ablaufverfolgungskennzeichnung 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 Ablaufverfolgungskennzeichnung 1800 ein systemeigenes 4 KB-Laufwerk, bei dem es sich um die unterstützte Sektorgröße für SQL Server handelt.

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

Weitere Informationen

Windows 11 native 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 werden.

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

Die folgende Tabelle enthält einen Vergleich der branchenspezifischen Größen, die von den Betriebssystemen gemeldet werden. In diesem Beispiel werden die Unterschiede zwischen Windows 10 und Windows 11 unter Verwendung desselben Speichergeräts veranschaulicht. Für die Werte und PhysicalBytesPerSectorForAtomicity PhysicalBytesPerSectorForPerformance, Windows 10 zeigt 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