この記事では、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:
バイト単位で返される値 PhysicalBytesPerSectorForAtomicity
と PhysicalBytesPerSectorForPerformance
を探し、これらの値が異なる場合は、最大の値を保持してディスク セクター サイズを確認します。 値 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 におけるレジストリのバックアップ方法と復元方法」を参照してください。
- レジストリ エディターを管理者として実行します。
-
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device
に移動します。 -
Edit>New>Multi-String 値を選択し
ForcedPhysicalSectorSizeInBytes
として名前を付けます。 - 名前を右クリックし、Modify を選択し、
* 4095
フィールドにを入力します。 - 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 の違いを示しています。
PhysicalBytesPerSectorForAtomicity
と PhysicalBytesPerSectorForPerformance
の値を使用した場合、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 |