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

この記事では、4 KB を超えるシステム ディスク セクター サイズに関連SQL Server 11 Windowsのインストール中または開始中のエラーのトラブルシューティングに関するソリューションを提供します。

現象

シナリオ #1: Windows 11 デバイスに SQL Server 2019、SQL Server 2017、SQL Server 2016 をインストールすると、SQL Server の データベース エンジン Services コンポーネントに次のようなエラーが表示されます。

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. 

シナリオ #2: 2019 SQL Server 2019、SQL Server 2017、または SQL Server 2016 をデバイスにインストールWindows 10します。 次に、デバイス上の OS を 11 Windowsします。 Windows 11 デバイスで SQL Server 2019、SQL Server 2017、または SQL Server 2016 を開始すると、サービスは開始に失敗し、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: 2019 SQL Server 2019、SQL Server 2017、または SQL Server 2016 をデバイスにインストールWindows 10します。 次に、デバイス上の OS を 11 Windowsします。 Windows 11 デバイスで SQL Server 2019、SQL Server 2017、または SQL Server 2016 を開始しようとしても、サービスは開始されません。 エラー ログ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: 11 LocalDBデバイスにWindowsインストールします。 セットアップが失敗し、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一貫性を確保するためにデータベースの回復プロセスを開始します。 このデータベース回復プロセスの一部には、システム およびユーザー データベース ファイルを開くアクティビティを試みる前に、基になるファイルシステムの整合性チェックが含まれる。

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

この場合、SQL Server は現在 512 バイトと 4 KB のセクター ストレージ サイズをサポートしていますので、サポートされていないファイル システムのために SQL Server を開始できません。

この特定の問題が発生した場合は、次のコマンドを実行します。

fsutil fsinfo sectorinfo <volume pathname>

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

fsutil fsinfo sectorinfo E:

バイト単位で返 PhysicalBytesPerSectorForAtomicity される値を探します。 値 4096 は、4 KB のセクター ストレージ サイズを示します。

さらに、ファイル システムとストレージ セクター Windowsサポートに関するサポート ポリシーに注意してください。 詳細については、「Microsoft サポート ポリシー for 4 KB sector hard drives」を参照Windowsしてください。

注意

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

解決策

Microsoft は現在、この問題を調査中です。

のいずれかの解決策 を検討してください。

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

  • レジストリ キーを追加すると、11 以降の動作が Windowsに似Windows 10。 これにより、セクター サイズは 4 KB のサイズとしてエミュレートされます。 レジストリ キーを追加するには、レジストリ エディターを使用するか、管理者として実行される Windows コマンド プロンプトまたは PowerShell で次のいずれかのコマンドを ForcedPhysicalSectorSizeInBytes 実行できます。

    重要

    このセクションには、レジストリを変更する方法を示すWindowsがあります。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリをバックアップおよび復元する方法の詳細については、「レジストリをバックアップおよび復元する方法」の記事をWindowsしてください。

    レジストリ エディター

    1. Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device に移動します。
    2. [編集] メニューの [新規] をポイント 、[複数文字列] の値を選択します。 名前を指定します ForcedPhysicalSectorSizeInBytes
    3. 新しい値を変更し、 を入力します * 4095[OK] を クリックし、レジストリ エディターを閉じます。

    管理者としてのコマンド プロンプト

    1. キーを追加します。
    REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t   REG_MULTI_SZ /d "* 4095" /f
    
    1. キーが正常に追加されたのか検証します。
    REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes"
    

    管理者としての PowerShell

    1. キーを追加します。
    New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString -Force -Value "* 4095"
    
    1. キーが正常に追加されたのか検証します。
    Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes"
    
  • トレース フラグ 1800 をSQL Serverして、このコマンドを開始できます。 詳細については 、「DBCC TRACEON」を参照してください。 このトレース フラグは既定では有効になっていません。 トレース フラグ 1800 では、SQL Server読み取りおよび書きSQL Serverセクター サイズとして 4 KB を使用する必要があります。 物理セクター サイズが 4 KB を超えるディスクで SQL Server を実行している場合、トレース フラグ 1800 を使用すると、ネイティブの 4 KB ドライブ (SQL Server でサポートされているセクター サイズ) がシミュレートされます。

  • 代わりにSQL ServerデバイスにWindows 10インストールします。

詳細情報

Windows 11 のネイティブ NVMe ドライバーが更新され、ファイルシステム ドライバーからエミュレートされる情報に依存するのではなく、NVMe ストレージ デバイスによって直接報告される実際のセクター サイズが含まれます。

このWindows 10は、物理記憶域のソース セクター サイズを報告しない。

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

次の表に、オペレーティング システムによって報告されるセクター サイズの比較を示します。 次の使用例は、同じストレージ デバイスをWindows 10 11 Windowsと 11 の違いを示しています。 値の場合 PhysicalBytesPerSectorForAtomicity 、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

関連項目