none
複数のPCがNAS上のDB(SQL Server Compact 4.0のSDFファイル)にアクセスするとオープンに時間がかかる現象に対して原因と対処方法を教えて下さい RRS feed

  • 質問

  • SQL Server Compact 4.0(製品バージョン:4.0.8876.1)のDB(SDFファイル)をNAS上に配置し、複数のクライアントPCからDBにアクセスすると、SqlCeConnection.Openに時間(初回だけではなくその後のオープンも含めて、オープン1回あたり3秒から8秒程度)がかかります。この発生頻度は、アクセスの多重度に比例している模様ですが、1台のPCだけでNAS上のDBにアクセスした時も発生する時があります。

    原因(なぜSqlCeConnection.Openに時間がかかるのか?)と回避策(どうすればOpenで時間がかかからないようにできるのか?)について、何卒、ご教示をお願いします。

    なお、お客様環境では管理者権限を利用できません。このため、各PC毎に、NAS上のSDFファイルに対するシンボリックリンクを作成し、シンボリックリンクファイルにアクセスする形態は取れません。

    また、当該現象を回避すべく、下記点を試みてみましたが、効果がない(オープン時間に3秒から8秒程度かかる)状態でした。

     ・全PC(すべてWin10)のIEの設定をプロキシ設定なし(自動プロキシ(自動検出、セットアップスクリプトの使用)はなし、手動プロキシ設定なし)にしても
     ・全PC(すべてWin10)のIEの詳細設定にて「サーバの証明書失効を確認する」のチェックボックスをOFFにしても
     ・全PC(すべてWin10)のSDFファイルのパスとして、 \\始まりのパスを指定しても、ネットワークドライブを指定したパスを指定しても
     ・全PC(すべてWin10)のオープン時のモードを「Mode = ReadWrite 」にしても
     ・SDFファイルをWin10上で新規作成したものをNASに配置し、すべてWin10のPCからアクセスしても

    (補足事項)

     ・オープン時のモードはExclusiveです。
       アプリは、別途、ロックファイルを用いて排他制御を実装しています。ロックを取得できたPCだけが、NAS上のDBに対しSqlCeConnectionを取得し、Openが実行できるようにしています。そして、Closeを実行した後はSqlCeConnectionもDisposeし、ロックを解放しています。

     ・環境は、NAS(TeraStation)⇔スイッチングハブ⇔Win10PC×4台 です。

    よろしくお願いします。

    2020年7月8日 12:09

すべての返信

  • Process Monitor で接続処理遅延時の情報を採取した場合、SQLServerCE dll のロードで時間を要している場合は、以下を試してみると良いかもしれません。

    Fix slow application startup due to code sign validation
    http://rusanu.com/2009/07/24/fix-slow-application-startup-due-to-code-sign-validation/
    HKLM\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CertDllCreateCertificateChainEngine\Config
    - ChainUrlRetrievalTimeoutMilliseconds
    - ChainRevAccumulativeUrlRetrievalTimeoutMilliseconds

    Procmon
    https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
    2020年7月8日 15:44
  • ご多忙の中、返信ありがとうございました。

    NAS上に配置しているCompactのDBに対してSqlCeConnection.Openの時間がかかる時、プロセスモニターでキャプチャしたところ、Open処理中のキャプチャログでは、ほぼ同じ時間だけ、大量のReadFileやWriteFileの処理がおこなわれていました。

    キャプチャログを見る限り、DLLのロードで時間がかかっている模様はありませんでした。

    また、お客様環境では管理者権限が使えない環境のため、レジストリ操作の依頼はできない状態です。

    せっかく頂いた情報ですが、今回は適用できなさそうです。情報提供、ありがとうございました。

    なお、表題タイトルに対する原因と回避策に関して、他の案をお持ちでしたらご教示頂ければ幸いです。

    2020年7月9日 12:33