次の方法で共有


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

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

この記事では、4 KB を超えるシステム ディスク セクター サイズに関連するエラーについて説明します。 システム ディスク セクター サイズが 4 KB を超えるマシンに SQL Server インスタンスをインストールしようとすると、次のシナリオが発生する可能性があります。

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

シナリオ 1: 互換性のあるセクター サイズのボリュームにファイルを移動する

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.

シナリオ 2: データベース エンジンのスタートアップ ハンドルが見つかりませんでした

Windows を実行している Azure 仮想マシン (VM) に SQL Server インスタンスをインストールしようとすると、インストールが失敗し、インストール中にエンジンが起動しようとしたときに、SQL Server エラー ログに次のエラー メッセージが表示されます。

ファイル '...\master.mdf' は、もともとセクター サイズ 4096 でフォーマットされており、セクター サイズが 8192 のボリューム上にあるため、使用できません。 元のセクター サイズと同じかそれ以下のセクター サイズを持つボリュームにファイルを移動してください。

さらに、SQL Server セットアップ フォルダーの Summary.txt ログ ファイルには、次の情報が表示されます。

Detailed results:
  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:          0x851A0019
  Error description:             Could not find the Database Engine startup handle.

詳細については、「 Windows Server 2022 Azure 仮想マシンでのセクター サイズ エラーで SQL Server のインストールが失敗する」を参照してください。

シナリオ 3: データベース エンジンの復旧ハンドルを待機できませんでした

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.

シナリオ 4: 同期 IO にフォールバックする必要がある 256 個の不適切なログ IO がありました

任意のバージョンの 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. 

シナリオ 5

任意のバージョンの SQL Server を Windows 10 デバイスにインストールします。 次に、デバイスの 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 

シナリオ 6: 元のセクター サイズと同じか小さいセクター サイズのボリュームにファイルを移動する

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 インスタンスでは、前のシナリオで説明したエラーが発生する可能性があります。

原因

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 を選択し、* 4095フィールドにを入力します。
    5. OKを選択し、レジストリ エディターを閉じます。

    この変更を有効にするには、レジストリ キーを追加した後、デバイスを再起動する必要があります。

  • レジストリ キーを追加せず、このシステムに複数のドライブがある場合は、SQL Server のインストールが完了した後で、データベース ファイルの別の場所を指定できます。 fsutil コマンドのクエリを実行するときに、ドライブにサポートされているセクター サイズが反映されていることを確認します。 SQL Server では現在、512 バイトと 4,096 バイトのセクター ストレージ サイズがサポートされています。

注意事項

SQL Server ファイルをホストするために、セクター サイズが 4 KB を超えるディスクを含む記憶域プールを既に作成している場合は、まず記憶域プールを削除し、この記事で説明されているトラブルシューティング方法のいずれかを適用してから、記憶域プールに SQL Server をインストールする前に記憶域プールを再構築する必要があります。

詳細

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