次の方法で共有


4 KB を超えるシステム ディスク セクター サイズに関連するエラーのトラブルシューティング

この記事では、Windows での SQL Server のインストールまたはインスタンスの起動中のエラーのトラブルシューティングを行うソリューションについて説明します。 この記事は、リリースされた全バージョンの SQL Server に対して有効です。

この記事で説明するエラーは、4 KB を超えるシステム ディスク セクター サイズに関連しています。

適用対象: 全バージョンの SQL Server

現象

シナリオ #1: 任意のバージョンの SQL Server をインストールします。 次に、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. 

または、次のようなエラーが SQL Server エラー ログに表示されます。

2025-02-26 20:01:16.79 spid14s     Starting up database 'master'.
2025-02-26 20:01:16.80 spid14s     Error: 5178, Severity: 16, State: 1.
2025-02-26 20:01:16.80 spid14s     Cannot use file 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\master.mdf' because it was originally formatted with sector size 4096 and is now on a volume with sector size 8192. Move the file to a volume with a sector size that is the same as or smaller than the original sector size.

シナリオ #2: 任意のバージョンの SQL Server を Windows 10 デバイスにインストールします。 次に、デバイスの OS を Windows 11 にアップグレードします。 Windows 11 デバイスで SQL Server を起動しようとすると、サービスの起動に失敗し、SQL Server エラー ログに次のようなエントリが記録されます。

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. 

シナリオ #3: Windows 10 デバイスに任意のバージョンの SQL Server をインストールします。 次に、デバイスの OS を Windows 11 にアップグレードします。 Windows 11 デバイスで SQL Server を起動しようとすると、サービスの起動に失敗します。 SQL Server エラー ログには、次のようなエントリが表示されます。

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 

シナリオ #4: Windows 11 デバイスに LocalDB をインストールします。 セットアップが失敗し、SQL Server エラー ログに次のようなエントリが表示されます。

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.

Windows 11 アプリケーション イベント ログには、次のようなエントリが表示されます。

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

注:

手動でインストールした SQL Server インスタンス、またはアプリケーションによってインストールされた LocalDB インスタンスでは、前のシナリオで説明したエラーが発生する可能性があります。

シナリオ #5: 4 KB を超えるセクター サイズを使用しようとすると、次のエラー メッセージが表示されます。

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.

原因

SQL Server では、データベースの一貫性を確保するために、サービスの起動時にデータベースの回復プロセスが開始されます。 このデータベース回復プロセスの一部として、システムやユーザー データベース ファイルを開く前に、基になるファイル システムの整合性チェックが実行されます。

一部の新しいストレージ デバイスとデバイス ドライバーでは、サポートされている 4 KB のセクター サイズより大きいディスク セクター サイズが公開されます。

この場合、SQL Server は現在、512 バイトと 4 KB のセクター ストレージ サイズをサポートしているため、サポートされていないファイル システムが原因で SQL Server を起動できなくなります。

この特定の問題が発生していることを確認するには、次のコマンドを実行します。

fsutil fsinfo sectorinfo <volume pathname>

たとえば、E: ボリュームを分析するには、次のコマンドを実行します。

fsutil fsinfo sectorinfo E:

バイト単位で返される値 PhysicalBytesPerSectorForAtomicityPhysicalBytesPerSectorForPerformance を探し、これらの値が異なる場合は、最大の値を保持してディスク セクター サイズを確認します。 値 4096 は、セクターのストレージ サイズが 4 KB であることを示しています。

また、ファイル システムとストレージ セクター サイズのサポートに関する Windows サポート ポリシーにも注意してください。 詳細については、「Windows の 4KB セクター ハード ドライブに対する Microsoft サポート ポリシー」の記事を参照してください。

注:

4 KB を超えるセクター サイズと互換性のある SQL Server のリリース済みバージョンはありません。 詳細については、「SQL Server でのハード ディスク ドライブのセクター サイズに関するサポート範囲」の記事を参照してください。

解決策

  • 現時点では、4 KB を超えるセクター サイズを提供する最新のストレージ プラットフォーム (NVMe など) を使用する場合、SQL Server を正常にインストールするには、 ForcedPhysicalSectorSizeInBytes レジストリ キーが必要です。 この Windows オペレーティング システム レジストリ キーは、セクター サイズを強制的に 4 KB としてエミュレートします。 ForcedPhysicalSectorSizeInBytesレジストリ キーを追加するには、「コマンド プロンプトまたは PowerShell」セクションの説明に従って、Registry Editor を使用するか、コマンドを実行します。 この変更を有効にするには、レジストリ キーを追加した後、デバイスを再起動する必要があります。 このシナリオでは、トレース フラグ 1800 を追加する必要はありません。

    重要

    このセクションには、Windows レジストリの変更方法を説明する手順が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 したがって、次の手順を注意深く実行してください。 保護のために、レジストリを変更する前に、バックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリのバックアップ方法と復元方法の詳細については、「Windows におけるレジストリのバックアップ方法と復元方法」を参照してください。

    1. レジストリ エディターを管理者として実行します。
    2. Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Deviceに移動します。
    3. Edit>New>Multi-String 値を選択しForcedPhysicalSectorSizeInBytesとして名前を付けます。
    4. 名前を右クリックし、Modify を選択し、Value データフィールドに* 4095を入力します。
    5. OKを選択し、レジストリ エディターを閉じます。
  • レジストリ キーを追加せず、このシステムに複数のドライブがある場合は、SQL Server のインストールが完了した後で、データベース ファイルの別の場所を指定できます。 fsutil コマンドのクエリを実行するときに、ドライブにサポートされているセクター サイズが反映されていることを確認します。 SQL Server では現在、512 バイトと 4,096 バイトのセクター ストレージ サイズがサポートされています。

詳細

Windows 11 のネイティブ NVMe ドライバーが、NVMe ストレージ デバイスに直接報告された実際のセクター サイズを含むように更新されました。 これは、ファイル システム ドライバーからエミュレートされた情報に依存せずに実行されました。

Windows 10 ドライバーは、物理ストレージのソース セクター サイズを報告しません。

改善された Windows 11 ドライバーは、一般的な NVMe ストレージ デバイスが使用しているエミュレーションを無視します。 たとえば、Windows で必要な 4 KB のセクター サイズをエミュレートするのではなく、fsutil で 8 KB または 16 KB のセクター サイズを表示します。

次の表は、オペレーティング システムによって報告されるセクター サイズの比較を示しています。 この例では、同じストレージ デバイスを使用した Windows 10 と Windows 11 の違いを示しています。 PhysicalBytesPerSectorForAtomicityPhysicalBytesPerSectorForPerformance の値を使用した場合、Windows 10 では 4 KB、Windows 11 では 16 KB と表示されます。

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