從 Windows 檔案總管存取 SQL Server FileTable 共用時增加 CPU 使用量

本文提供從 Windows 檔案總管存取 SQL Server FileTable 共用時,會導致 CPU 使用量增加的問題解決方案。

適用於:Windows 10 - 所有版本,Windows Server 2012 R2
原始 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 共用在一或多個 explorer.exe 視窗中開啟時,它會繼續嘗試註冊目錄變更通知。 關閉這些視窗之後,變更通知行為應該會停止。 不支援目錄變更通知的第三方文件伺服器也可能公開此行為。

解決方案

警告

不當使用「登錄編輯程式」可能會導致嚴重的問題,甚至必須重新安裝作業系統。 Microsoft 不保證可以解決您不當使用「登錄編輯程式」所導致的問題。 請自行承擔使用「登錄編輯程式」的一切風險。

若要避免此問題,請使用 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 後,再按一下 [確定]

  2. 找出並按下列登入機碼:

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

  3. [編輯] 功能表中,指向 [新增],然後按一下 [DWORD 值]

  4. 輸入 NoRemoteChangeNotify,然後按 ENTER。

  5. [編輯] 功能表中,按一下 [修改]

  6. [數值] 資料方塊中輸入 1,然後按一下 [確定]

  7. 結束 [登錄編輯程式]。

關閉所有用戶的變更通知要求

  1. 依序按一下 [開始] 及 [執行],並在 [開啟] 方塊中鍵入 regedit 後,再按一下 [確定]

  2. 找出並按下列登入機碼:

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

  3. [編輯] 功能表中,指向 [新增],然後按一下 [DWORD 值]

  4. 輸入 NoRemoteChangeNotify,然後按 ENTER。

  5. [編輯] 功能表中,按一下 [修改]

  6. [數值] 資料方塊中輸入 1,然後按一下 [確定]

  7. 結束 [登錄編輯程式]。