見出し画像

Windows11のSQLServerインストールエラーの原因と解決方法

こんにちは、アバナードの井関です。
先日、会社貸与PCが新しくなりました。
VisualStudioやらを新たにインストールする中でSQLServer2019のインストール時にエラーが発生するということがあり、少し困ったので調べた結果を投稿します。

以下、エラーメッセージ

「データベース エンジン の復旧ハンドルの待機に失敗しました。考えられる原因については、SQL server エラーログを参照してください。」


調べてみるとシステムディスクセクターサイズが4KBを超えるデバイスで発生するという事象を見つけました。
参考リンク

システムディスクセクターサイズ?という初耳の単語が登場ですが、どうやらハードディスクに書き込む最小単位のようです。
現在、SQL Serverがそもそも512バイトと4KBのセクターストレージサイズしかサポートしていないとのことです。
ということはWindows11が関与している原因ではなかったんですが、4KBを超過するPCに新調してこの事象に出くわした人はまずWindows11との関与を疑うだろうと予想し(私がそうでした)、あえて記事タイトルはそのままにしておきます。
セクターサイズはファイルシステム(NTFS)に依存しますが、4KB超過に遭遇する条件というか対象デバイスまでは調べてもあまり明確な手がかりがなく、もしかしたら今後けっこう発生する人も多いんじゃないか、ということで記事にしてみます。

システムディスクセクターサイズの確認方法

Microsoftのトラブルシューティングを参照

1.コマンドプロンプトを管理者権限で起動します。
下記例ではタスクバーの検索メニューに「cmd」と入力⇒表示されたコマンドプロンプトアイコンを右クリック⇒管理者として実行します。

検索メニュー

2.コマンドプロンプトで次のコマンドを実行します。

fsutil fsinfo sectorinfo C:

実行結果例

PhysicalBytesPerSectorForAtomicity の値が4096を超過する場合は、記事冒頭のエラーが発生するデバイスということになります。
上記スクショは解決後の状態のため4096になっており、この場合は4KBに該当しエラーは発生しません。

解決方法

Microsoftのトラブルシューティング参照

解決方法の概要としては、レジストリキーを追加して、セクターサイズを強制的に4KBとしてエミュレートします。

レジストリキーを誤って編集すると深刻な問題が発生することがあるため、事前のバックアップを推奨します。
https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/performance/windows-registry-advanced-users#back-up-the-registry

レジストリエディター

1.レジストリエディターを管理者権限で起動します。
下記例では検索に「レジストリ」と入力⇒表示されたレジストリ エディターアイコンを右クリック⇒管理者として実行します。

2.レジストリエディター画面上部のパス表示個所("コンピューター"と表示されている個所)に「コンピュータ\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device」を入力し、Enterで確定します。
入力したパスまでジャンプできます。(できない場合は上記のパスまでクリックで辿っていきます)

3.「編集」⇒「新規」⇒「複数行文字列値」を選択します。

4.作成したキーの名前を「ForcedPhysicalSectorSizeInBytes」に変更します。

5.作成したキーを右クリック⇒「修正」⇒「* 4095」を入力します。

レジストリキーの追加はここまで。あとはコマンドプロンプトとPowershellで作成したキーを追加します。

コマンドプロンプト

1.管理者権限でコマンドプロンプトを起動し、次のコマンドを実行します。(キーの追加)

REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t   REG_MULTI_SZ /d "* 4095" /f

2.キーが正常に登録されたか確認します。

REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes"

「* 4095」と表示されればOKです。

PowerShell

1.管理者権限でPowerShellを実行します。
下記例では検索に「powershell」と入力⇒表示されたWindowsPowerShellアイコンを右クリック⇒管理者として実行します。

2.次のコマンドを実行します。(キーの追加)

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString -Force -Value "* 4095"

3.キーが正常に登録されたか確認します。

Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes"

こちらも{* 4095}と表示されればOKです。

あとはデバイスを再起動し、SQLServerをインストールしてみると無事に完了しました!
Microsoftのトラブルシューティングに沿った内容ですが、こちらの記事はスクショ付きなので解決のための参考になればと思います。

記事が皆さんのお役に立てましたら是非いいねやフォローをお願いいたします。
内容に関するご指摘や、その他何かございましたら下記に連絡ください。
アバナード関西 井関 純一
junichi.iseki(@)avanade.com / Linkedin

この記事が気に入ったらサポートをしてみませんか?