次の方法で共有


Windows エクスプローラーから SQL Server FileTable 共有にアクセスするときの CPU 使用率の増加

この記事では、Windows エクスプローラーから SQL Server FileTable 共有にアクセスするときに CPU 使用率が増加する問題の解決策について説明します。

元の KB 番号: 3092936

現象

以下のシナリオについて考えてみます。

  • SQL Server FileTableを実装しました。
  • FileTable は SMB 共有を公開します。
  • マップされたドライブまたは UNC パスを使用して、Windows エクスプローラー (explorer.exe) を使用して SMB 共有にアクセスします。

このシナリオでは、explorer.exeおよび SQL Server およびシステム プロセスでの CPU 使用率の増加に気付く場合があります。 この現象は、SMB ディレクトリ変更通知トラフィックの増加を反映しています。

原因

SQL Server FileTable 共有では、ディレクトリ変更通知はサポートされていません。 そのため、SQL Server を実行しているサーバーは、STATUS_NOT_SUPPORTED値を使用してこれらの要求に応答します。 explorer.exeは、この応答値を同期的に処理できないため、FileTable SMB 共有が 1 つ以上のexplorer.exe ウィンドウで開かれている間も、ディレクトリ変更通知の登録を試行し続けます。 これらのウィンドウが閉じられると、変更通知の動作が停止します。 ディレクトリ変更通知をサポートしていないサード パーティのファイル サーバーでも、この動作が公開される場合があります。

解決方法

警告

レジストリ エディタの使用を誤ると、オペレーティング システムの再インストールが必要になるような深刻な問題を引き起こす可能性があります。 レジストリ エディターの不適切な使用によって生じた問題については、解決を保証できません。 リスクを理解した上でレジストリ エディターを使用してください。

この問題を回避するには、 NoRemoteChangeNotify レジストリ値を使用して SMB ディレクトリ変更通知を無効にします。 これは、Windows エクスプローラーを使用して FileTable 共有にアクセスするすべてのシステムで行います。

  • 現在ログオンしているユーザーに設定を適用するには、次のレジストリ キーに NoRemoteChangeNotify レジストリ エントリを追加します。

    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer

  • コンピューターにログオンするすべてのユーザーに設定を適用するには、次のレジストリ キーに NoRemoteChangeNotify レジストリ エントリを追加します。

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer

NoRemoteChangeNotify レジストリ エントリの値を 1 に設定すると、マップされたネットワーク共有のフォルダーで発生するファイルとフォルダーの変更に対するリモート変更通知要求をオフにします。 リモート変更通知要求を有効にするには、 NoRemoteChangeNotify レジストリ エントリを 0 (ゼロ) に設定します。

次のように、現在ログオンしているユーザーに対してのみ変更通知要求をオフにしてください。

  1. [開始] をクリックし、[実行] をクリックし、[開く] ボックスに「regedit」と入力し、OK をクリックします。

  2. 次のレジストリ キーに移動してクリックします。

    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer

  3. [編集] メニューの [新規] をポイントし、[DWORD 値] をクリックします。

  4. 「<NoRemoteChangeNotify」と入力し、Enter キーを押します。

  5. [ Edit メニューの Modify をクリックします。

  6. [値のデータ] ボックスに「1」と入力し、[OK] をクリックします。

  7. レジストリ エディターを終了します。

すべてのユーザーの変更通知要求をオフにする

  1. [開始] をクリックし、[実行] をクリックし、[開く] ボックスに「regedit」と入力し、OK をクリックします。

  2. 次のレジストリ キーに移動してクリックします。

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer

  3. [編集] メニューの [新規] をポイントし、[DWORD 値] をクリックします。

  4. 「<NoRemoteChangeNotify」と入力し、Enter キーを押します。

  5. [ Edit メニューの Modify をクリックします。

  6. [値のデータ] ボックスに「1」と入力し、[OK] をクリックします。

  7. レジストリ エディターを終了します。