載入特定模組或篩選驅動程式時的效能和一致性問題
原始產品版本:SQL Server
原始 KB 編號: 2033238、2454053
徵兆
請考慮下列其中一個案例:
- 某些模組會載入 SQL Server 行程位址空間(Sqlservr.exe)。
- 某些篩選驅動程式會載入執行 SQL Server 元件的系統。
在案例中,您可能會遇到 SQL Server 資料庫引擎 效能降低和一致性問題。
- 報告各種無回應相關的錯誤訊息和條件(SQL Server 排程器訊息,例如 17883、應用程式逾時訊息、SQL Server 內嚴重封鎖)。
- 即使並行的負載或活動量並不異常繁重,SQL Server 的回應速度也變慢。
- 例外狀況(例如存取違規)、資料庫一致性、判斷提示訊息或非預期的進程終止嚴重錯誤訊息。
- 當您在 SQL Server 中使用記憶體內部 OLTP 數據表時,100% CPU 使用率和長時間的資料庫復原時間。
- SQL Server 進程的高 CPU 使用量,尤其是特殊許可權的處理器時間。
- 當 SQL Server 進程進行 Windows API 呼叫時,非預期或無法解釋的失敗。
- 針對 SQLDumper.exe 觸發的記憶體轉儲可能無法完成阻礙任何疑難解答活動。
由於這些問題的性質,根本原因識別通常需要大量的疑難解答時間和低層級的追蹤。
原因
發生這些問題的原因是下列模組和篩選驅動程式的原因。
模組 (DLL 或 EXE)
發生這些問題的原因是在執行 SQL Server 的伺服器上安裝的應用程式或其他軟體可以將特定模組載入 SQL Server 進程(Sqlservr.exe)。 這可以達成特定的商業規則需求、增強的功能或入侵監視。 這些模組可能會執行不支持的活動,包括繞道重要的 Win32 API 和 SQL Server 例程,以及呼叫具風險的 API。 此外,這些模組內的一些內部問題可能會導致 SQL Server 進程正常運作所需的各種記憶體結構損毀。
在指定進程中載入的模組清單可以透過各種工具取得,例如 ListDlls 或 進程總管。
篩選驅動程式
篩選驅動程式 可以安裝在系統上,做為應用程式安裝程式的一部分,以提供某種功能。 範例包括防毒保護、在線備份、加密服務,以及數據壓縮或重組設施。 這些篩選驅動程式會自行插入 Windows 檔案 I/O 堆疊,以增強或改變文件系統要求的行為。
在某些情況下,這些要求可能需要很長的時間才能完成或耗用過多的資源。 此外,在相同驅動程式堆疊中存在的不同篩選驅動程序之間,可能會有某種形式的不相容。
SQL Server 通常會發出許多文件系統 I/O(其中部分大於平均值)。 因此,與其他具有較少 I/O 強度的執行中應用程式相比,篩選驅動程式的問題會對 SQL Server 產生更嚴重的影響。
注意
不同於插入的 DLL,篩選驅動程式(通常是具有.sys擴充功能)不會顯示在使用者進程詳細數據中,因為它們是核心實體。 您可以使用 Windows 內 建fltmc.exe 之類的工具來探索已安裝的迷你篩選。
因應措施
警告
這個因應措施可能會使電腦或網路更容易遭受惡意使用者或惡意軟體 (例如病毒) 的攻擊。 我們不建議使用此因應措施,但會提供這項資訊,因此您可以自行自行實作此因應措施。 採用此因應措施需自行承擔風險。
若要解決這些問題,請識別造成問題的篩選驅動程式或模組。 然後,請適當地嘗試下列所有或其中一種方法。 若要協助您識別篩選驅動程式或模組,請檢查 一些可能的篩選驅動程式和模組 清單,以取得詳細資訊。
- 請連絡模組、篩選驅動程式或應用程式廠商,以檢查更新。 套用任何可用的更新。
- 以不干擾 SQL Server 工作負載或作業的方式設定篩選驅動程式或相關聯的應用程式。
- 停用篩選驅動程式載入系統。
- 設定應用程式不要將特定模組載入 SQL Server 進程。
- 在某些情況下,您可能必須移除模組或篩選驅動程式及其相關聯的應用程式,才能將穩定性還原至 SQL Server 進程和系統。
可能導致問題的篩選驅動程式和模組清單
下列清單可協助您識別可能導致效能問題的篩選驅動程式和模組。 您可以收集問題的反覆診斷和追蹤數據集。
ENTAPI.DLL
如果您在執行 Microsoft SQL Server 的伺服器上安裝 McAfee VirusScan Enterprise,然後設定此軟體來監視 SQL Server,則ENTAPI.DLL 會載入 SQL Server 程式。 載入此模組時,重要的 Win 32 API 也會在 SQL Server 進程內被繞道。 如果您注意到此模組已載入 SQL Server 進程,請將 McAfee VirusScan Enterprise 設定為從各種進階監視中排除Sqlservr.exe,例如緩衝區溢位保護。
HIPI.DLL、HcSQL.DLL、HcApi.DLL和HcThe.DLL
如果您在與 SQL Server 相同的系統上安裝 McAfee 主機入侵防護軟體,這些 DLL 檔案會載入 SQL Server 程式。 如果您注意到此模組已載入 SQL Server 程式,請將 McAfee 主機入侵防護設定為從其監視清單中排除Sqlservr.exe。
SOPHOS_DETOURED.DLL、SWI_IFSLSP_64.DLL和SOPHOS_DETOURED_x64.DLL
如果您在執行 SQL Server 的伺服器上安裝 Sophos 防病毒軟體程式,這些 DLL 檔案會載入 SQL Server 進程。 如果您注意到此模組已載入 SQL Server 進程,您可以設定AppInit_Dlls登錄子機碼,以避免將此模組載入 SQL Server 進程。 如需詳細資訊,請參閱 Windows 7 和 Windows Server 2008 R2 和 AppInit DLL 與安全開機中的AppInit_DLLs。
PIOLEDB.DLL和PISDK.DLL
如果您使用 PI OLEDB 提供者從 PI 伺服器存取數據,或是使用使用 PI SDK 的擴充預存程式,這些 DLL 檔案會載入 SQL Server 進程。 如果您注意到這些模組已載入 SQL Server 進程,請連絡這些模組的廠商,將 OLEDB 提供者設定為跨進程提供者。 此組態有助於避免需要將這些模組載入 SQL Server 進程。
UMPPC*.DLL 和 SCRIPTCONTROL*.DLL
如果您為 CrowdStrike Anti-Virus/Endpoint Protection 程式啟用 其他使用者模式數據 防護設定,這些 DLL 檔案會載入至 SQL Server 相關進程的位址空間。 當 SQL Server Agent 在執行作業時嘗試建立新進程時,您可能會注意到失敗。 嘗試啟動 SQL Server Management Studio 時,可能會遇到失敗。 您也可能看到 SQL Server 無法啟動SQLDumper.exe以產生記憶體轉儲。 建議您連絡 Crowdstrike 支援,以取得問題的相關信息,並詢問是否有可用的修正程式。
perfiCrcPerfMonMgr.DLL
如果您安裝 Trend Micro OfficeScan 用戶端,此 DLL 檔案會載入 SQL Server 進程。 請參閱趨勢微端點產品的建議掃描排除清單上的軟體發行者排除清單設定。
MFEBOPK.SYS
此篩選驅動程式用於
Buffer Overflow Protection
McAfee VirusScan Enterprise中的功能。 如果您已啟用這項功能,您會發現sqlservr.exe是受Buffer Overflow Protection
保護的進程清單之一。 如果您在執行 SQL Server 的系統上有此篩選驅動程式,您必須執行 [因應措施] 區段中指定的動作。 如需詳細資訊,請參閱 高影響問題:伺服器可能會因為多個問題而變得沒有回應。NLEMSQL64.SYS和NLEMSQL.SYS
NetLib Encryptionizer-Software 會安裝此篩選驅動程式。 當此篩選驅動程式安裝在執行 SQL Server 的電腦上,而且您執行備份至網路共用時,可能會遇到傳回 操作系統錯誤 1 的失敗:不正確的函式。 若要解決此問題,請連絡軟體廠商以取得篩選驅動程式的更新。
MFETDIK.SYS
此篩選驅動程式用於
McAfee Anti-Virus Mini-Firewall
McAfee VirusScan Enterprise和McAfee McShield產品中的功能。 如果您已啟用此功能,您會發現sqlservr.exe是功能所監視Anti-Virus
的進程清單之一。 如果您在執行 SQL Server 的系統上有此篩選驅動程式,您必須執行 [因應措施] 區段中指定的動作。 您也可以考慮將 SQL Server 進程新增至防病毒軟體組態中的低風險進程清單。
參考
- WDM 驅動程式的類型
- 如何在 Windows 中暫時停用核心模式篩選驅動程式
- 繞道或類似的技術可能會導致 SQL Server 發生非預期的行為
- 如何在 SQL Server 進程之外執行 DLL 型 COM 物件
協力廠商資訊免責聲明
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。
協力廠商連絡資訊免責聲明
Microsoft 提供協力廠商連絡資訊,以協助您尋找有關此主題的其他資訊。 此連絡資訊可能會變更而不另行通知。 Microsoft 不保證協力廠商連絡資訊的準確性。
第三方資訊與解決方案免責聲明
本文件中的資訊和解決方案代表 Microsoft Corporation 在本文件發行當時對這些問題的看法。 此解決方案可透過 Microsoft 或協力廠商提供商獲得。 Microsoft 不特別建議本文可能提及的任何協力廠商提供者或協力廠商解決方案。 本文也可能未提及其他協力廠商提供者或協力廠商解決方案。 由於 Microsoft 必須不斷因應市場動態,因此,本文所提供的資訊不應解釋為 Microsoft 的承諾。 對於由 Microsoft 或任何提及的協力廠商提供者所提供之任何資訊或任何解決方案的正確性,Microsoft 不提供擔保或背書。
Microsoft 不擔保並排除任何明示、默示或法定之說明、擔保及條件。 這些條件包括 (但不限於) 有關任何服務、解決方案、產品或任何其他資料或資訊之所有權、未侵權、品質保證、適售性及特定目的適用性之說明、擔保及條件。 無論任何情況下,Microsoft 對本文提及的任何協力廠商解決方案皆不負任何法律責任。