從 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 (零) 。
請確定您只針對目前已登入的使用者關閉變更通知要求,如下所示:
依序按一下 [開始] 及 [執行],並在 [開啟] 方塊中鍵入 regedit 後,再按一下 [確定]。
找出並按下列登入機碼:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
在 [編輯] 功能表中,指向 [新增],然後按一下 [DWORD 值]。
輸入 NoRemoteChangeNotify,然後按 ENTER。
在 [編輯] 功能表中,按一下 [修改]。
在 [數值] 資料方塊中輸入 1,然後按一下 [確定]。
結束 [登錄編輯程式]。
關閉所有用戶的變更通知要求
依序按一下 [開始] 及 [執行],並在 [開啟] 方塊中鍵入 regedit 後,再按一下 [確定]。
找出並按下列登入機碼:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
在 [編輯] 功能表中,指向 [新增],然後按一下 [DWORD 值]。
輸入 NoRemoteChangeNotify,然後按 ENTER。
在 [編輯] 功能表中,按一下 [修改]。
在 [數值] 資料方塊中輸入 1,然後按一下 [確定]。
結束 [登錄編輯程式]。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應