特定のモジュールまたはフィルター ドライバーが読み込まれる場合のパフォーマンスと整合性の問題

元の製品バージョン: SQL Server
元の KB 番号: 2033238、2454053

現象

次のいずれかのシナリオを検討してください。

  • 特定のモジュールは、SQL Server プロセス アドレス空間 (Sqlservr.exe) に読み込まれます。
  • 特定のフィルター ドライバーは、SQL Server コンポーネントを実行しているシステムに読み込まれます。

シナリオでは、データベース エンジンのパフォーマンスの低下と整合性の問題SQL Server発生する可能性があります。

  • 応答しないさまざまなエラー メッセージと条件のレポート (17883、アプリケーション タイムアウト メッセージ、SQL Server内の重大なブロックなど、SQL Server スケジューラ メッセージ)。
  • 負荷またはアクティビティの同時量が異常に重くない場合でも、SQL Serverからの応答が遅くなります。
  • 例外 (アクセス違反など)、データベースの整合性、アサーション メッセージ、予期しないプロセスの終了に関する重大なエラー メッセージ。
  • SQL Serverで OLTP テーブルを使用する場合、CPU 使用率が 100% になり、データベースの復旧時間 In-Memory 長くなります。
  • SQL Server プロセスの CPU 使用率が高く、特に特権プロセッサ時間です。
  • SQL Server プロセスが Windows API 呼び出しを行うと、予期しないエラーまたは原因不明のエラーが発生します。
  • SQLDumper.exe に対してトリガーされたメモリ ダンプは、トラブルシューティング アクティビティの妨げになる可能性があります。

これらの問題の性質上、根本原因の特定には、多くの場合、トラブルシューティング時間と低レベルのトレースが必要です。

原因

これらの問題は、モジュールとフィルター ドライバーの次の原因が原因で発生します。

モジュール (DLL または EXEs)

これらの問題は、SQL Serverを実行しているサーバーにインストールされているアプリケーションまたはその他のソフトウェアが、特定のモジュールをSQL Server プロセス (Sqlservr.exe) に読み込む可能性があるために発生します。 これは、特定のビジネス ロジック要件、強化された機能、または侵入監視を実現するために行うことができます。 これらのモジュールでは、重要な Win32 API とSQL Server ルーチンの迂回、危険な API の呼び出しなど、サポートされていないアクティビティが実行される場合があります。 さらに、これらのモジュール内のいくつかの組み込み問題により、SQL Server プロセスが正しく機能するために必要なさまざまなメモリ構造が破損する可能性があります。

特定のプロセスで読み込まれたモジュール (DLL) の一覧は、ListDllsProcess エクスプローラーなど、さまざまなツールを使用して取得できます。

フィルター ドライバー

フィルター ドライバー は、アプリケーションのセットアップ プログラムの一部としてシステムにインストールして、特定の種類の機能を提供できます。 たとえば、ウイルス対策保護、オンライン バックアップ、暗号化サービス、データ圧縮または最適化機能などがあります。 これらのフィルター ドライバーは、ファイルシステム要求の動作を強化または変更するために、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 プロセスに読み込まれます。 このモジュールが読み込まれると、SQL Server プロセス内で重要な Win 32 API も迂回されます。 このモジュールがSQL Serverプロセスに読み込まれている場合は、バッファー オーバーフロー保護など、さまざまな高度な監視から Sqlservr.exe を除外するように McAfee VirusScan Enterprise を構成します。

  • HIPI.DLLHcSQL.DLLHcApi.DLL およびHcThe.DLL

    これらの DLL ファイルは、SQL Serverと同じシステムに McAfee Host 侵入防止ソフトウェアをインストールすると、SQL Server プロセスに読み込まれます。 このモジュールがSQL Serverプロセスに読み込まれている場合は、監視リストから Sqlservr.exe を除外するように McAfee Host 侵入防止を構成します。

  • SOPHOS_DETOURED.DLLSWI_IFSLSP_64.DLL 、SOPHOS_DETOURED_x64.DLL

    これらの DLL ファイルは、SQL Serverを実行しているサーバーに Sophos ウイルス対策プログラムをインストールすると、SQL Server プロセスに読み込まれます。 このモジュールがSQL Server プロセスに読み込まれている場合は、このモジュールをプロセスに読み込むのを避けるために、AppInit_Dlls レジストリ サブキー SQL Server構成できます。

  • PIOLEDB.DLLPISDK.DLL

    これらの DLL ファイルは、PI OLEDB プロバイダーを使用して PI サーバーからデータにアクセスする場合、または PI SDK を使用する拡張ストアド プロシージャを使用する場合は、SQL Server プロセスに読み込まれます。 これらのモジュールがSQL Server プロセスに読み込まれている場合は、これらのモジュールのベンダーに問い合わせて、OLEDB プロバイダーをアウトプロセス プロバイダーとして構成します。 この構成は、これらのモジュールをSQL Server プロセスに読み込む必要性を回避するのに役立ちます。

  • UMPPC*.DLLSCRIPTCONTROL*.DLL

    これらの DLL ファイルは、CrowdStrike Anti-Virus/Endpoint Protection プログラムの [追加のユーザー モード データ防止] 設定を有効にした場合、SQL Server関連するプロセスのアドレス空間に読み込まれます。 ジョブの実行時SQL Server エージェント新しいプロセスの作成中にエラーが発生することがあります。 SQL Server Management Studioの起動中にエラーが発生する可能性があります。 また、メモリ ダンプを生成するためにSQL Server SQLDumper.exe を起動できない場合もあります。 問題に関連する情報をクラウドストライク サポートに問い合わせて、修正プログラムが利用可能かどうかを確認することをお勧めします。

  • perfiCrcPerfMonMgr.DLL

    この DLL ファイルは、Trend Micro OfficeScan クライアントをインストールした場合、SQL Server プロセスに読み込まれます。 「Trend Micro Endpoint 製品の推奨スキャン除外リスト」のソフトウェア発行元の除外リストの設定を参照してください。

  • MFEBOPK.SYS

    このフィルター ドライバーは、McAfee VirusScan Enterprise の機能に使用 Buffer Overflow Protection されます。 この機能を有効にしている場合は、sqlservr.exe が で Buffer Overflow Protection保護されているプロセスの一覧に含まれていることがわかります。 SQL Serverを実行しているシステムでこのフィルター ドライバーがある場合は、回避策セクションで指定されているアクションを実行する必要があります。 詳細については、「 影響の大きい問題: 複数の問題が原因でサーバーが応答しなくなる可能性がある」を参照してください。

  • NLEMSQL64.SYSNLEMSQL.SYS

    このフィルター ドライバーは、NetLib Encryptionizer-Software によってインストールされます。 このフィルター ドライバーがSQL Serverを実行しているコンピューターにインストールされ、ネットワーク共有へのバックアップを実行すると、オペレーティング システム エラー 1 : 不正解な関数を返すエラーが発生する可能性があります。 この問題を解決するには、ソフトウェア ベンダーに問い合わせて、フィルター ドライバーの更新プログラムを入手してください。

  • MFETDIK.SYS

    このフィルター ドライバーは、製品 McAfee VirusScan Enterprise と McAfee McShield の機能に使用 McAfee Anti-Virus Mini-Firewall されます。 この機能を有効にしている場合は、sqlservr.exe 機能によって Anti-Virus 監視されるプロセスの一覧に含まれていることがわかります。 SQL Serverを実行しているシステムでこのフィルター ドライバーがある場合は、回避策セクションで指定されているアクションを実行する必要があります。 また、ウイルス対策構成の低リスクプロセスリストにSQL Serverプロセスを追加することも検討できます。

関連情報

サードパーティの情報に関する免責事項

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。

サードパーティのお問い合わせ窓口に関する免責事項

Microsoft では、このトピックに関する追加情報を見つけるのに役立つサード パーティの連絡先情報を提供しています。 将来予告なしに変更されることがあります。 Microsoft は、第三者の連絡先情報の正確性を保証しません。

サード パーティの情報とソリューションの免責事項

このドキュメントは暫定版であり、このドキュメントに記載されている情報およびソリューションは、このドキュメントの発行日におけるマイクロソフトの見解を示すものです。 これらのソリューションはマイクロソフトまたはサードパーティ プロバイダーを通じて利用できます。 マイクロソフトは、この資料で説明することがあるサードパーティ プロバイダーまたはサードパーティ ソリューションを特別に推奨するものではありません。 この資料で説明していない、その他のサードパーティ プロバイダーまたはサードパーティ ソリューションが存在する場合もあります。 マイクロソフトは変化する市場の条件に対応する必要があるため、この情報がマイクロソフトの誓約であると解釈しないでください。 マイクロソフトは、マイクロソフトまたはこの資料に記載されているサードパーティ プロバイダーによって提供される情報の正確性およびソリューションの正確性を保証することも、推奨することもできません。

明示、黙示、または法律の規定にかかわらず、マイクロソフトは一切の保証をせず、すべての表示、保証、および条件を排除します。 これらの条件には、サービス、ソリューション、製品、またはその他の素材または情報に関する、タイトルの表明、保証、または条件、非侵害、満足のいく条件、商品性、および特定の目的への適合性が含まれますが、これらに限定されません。 マイクロソフトは、いかなる場合においても、この資料に記載されているサードパーティ ソリューションの責任を負いません。