none
Vistaで開いたSDFファイルをPDAで開くと初回が遅い RRS feed

  • 質問

  • はじめまして。ugen と申します。

    以下環境で開発しています。

    OS:WindowsCE6.00

    開発:Visual Studio 2008 VB + Compact Framework 3.5

    DB:SQLServer Compact 3.5 SP1 (SP2はリリース版に適用されるか未定ですのでSP1を利用しています)

     

    SDFファイルをVista機にコピーして一度でも開くと、PDAに戻して開くときに時間が掛ります。

    データ量が多かったり、Indexが多い場合には数時間掛り、場合によってはPDA側でメモリ不足のエラーが表示され

    開けなくなってしまいます。

    (開くのは開発したアプリでもSQL Query Analyzerでも一緒です)

    しかし、XP機にコピーして開いたりデータ操作した場合、PDAに戻しても何ら問題がありません。

    次のような情報を見つけたのですがXPとVistaの違いについては書かれていませんでした。

    http://blogs.msdn.com/b/sqlservercompact/archive/2009/04/01/after-moving-the-database-from-one-platform-to-other-the-first-sqlceconnection-open-takes-more-time.aspx

     

    Vistaで開いてもXPで開いた時と同様な動作とさせたいと考えております。

     

    ネット上をさまよっても有用な情報にたどり着けないでいます。

     

    WindowsCEのフォーラムで同様の質問をさせて頂いていたのですが回答がつきづらいようでしたのでこちらに移動させて頂きました。

     

    どなたか対策方法をご存じの方がいたらお教え下さい。
    2010年6月10日 1:38

回答

  •  NLS sort version is different for Desktop Windows OS and WM/WCE. During the first database connection open, SQLCE rebuilds all indexes if there is a NLS sort version mismatch with the last accessed OS platform.

    恐らく、まさにこの現象が発生(CE上でデータベースをOPENした際に、すべてのインデックスが再作成される) しているのではないでしょうか。

    また、以下のサイトを確認するかぎり、 XP の Sorting version numbers  はなく (N/A)、 Vista  の Sorting version numbers は、0x00 0405 00 であることが記載されています。

    ここからは予測ですが、WM/WCE についても、XP と同様に、NLS Version が N/A なのではないかと。

    そのため

    Windows XP -> WCE : Sort Version がお互いに N/A なので、初回 sdf ファイルを Open時にインデックスの再構築が行われない。

    Windows Vista -> WCE : Sort Version が異なるため、初回 sdf ファイルを Open時にインデックスの再構築が行われる。

    といった動作になっているのではないでしょうか。

    また恐らく、この現象を回避させる方法はないのではないかと思います。

    NLS Sorting Changes
    http://msdn.microsoft.com/en-us/library/dd464640(VS.85).aspx

    • 回答としてマーク ugen 2010年6月10日 9:03
    2010年6月10日 7:34
  • NOBTAさん、ありがとうございます。

     

    なるほど、納得です。

    Indexの再生成がPDA(WinCE)でもPC(Vista)でも発生しているであろう予想はしており、チームブログの情報通りであったため当初諦めていました。

    しかしXPで操作した時にIndex再生成が走らないためもしかしたらVistaでも行けるのでは?と考えていました。

    納得の回答です。

     

    Win7のXPモードでも調べてみてそちらが問題なければVistaからWin7への乗り換えを検討しようと思います。

    • 回答としてマーク ugen 2010年6月10日 9:11
    2010年6月10日 9:10

すべての返信

  •  NLS sort version is different for Desktop Windows OS and WM/WCE. During the first database connection open, SQLCE rebuilds all indexes if there is a NLS sort version mismatch with the last accessed OS platform.

    恐らく、まさにこの現象が発生(CE上でデータベースをOPENした際に、すべてのインデックスが再作成される) しているのではないでしょうか。

    また、以下のサイトを確認するかぎり、 XP の Sorting version numbers  はなく (N/A)、 Vista  の Sorting version numbers は、0x00 0405 00 であることが記載されています。

    ここからは予測ですが、WM/WCE についても、XP と同様に、NLS Version が N/A なのではないかと。

    そのため

    Windows XP -> WCE : Sort Version がお互いに N/A なので、初回 sdf ファイルを Open時にインデックスの再構築が行われない。

    Windows Vista -> WCE : Sort Version が異なるため、初回 sdf ファイルを Open時にインデックスの再構築が行われる。

    といった動作になっているのではないでしょうか。

    また恐らく、この現象を回避させる方法はないのではないかと思います。

    NLS Sorting Changes
    http://msdn.microsoft.com/en-us/library/dd464640(VS.85).aspx

    • 回答としてマーク ugen 2010年6月10日 9:03
    2010年6月10日 7:34
  • NOBTAさん、ありがとうございます。

     

    なるほど、納得です。

    Indexの再生成がPDA(WinCE)でもPC(Vista)でも発生しているであろう予想はしており、チームブログの情報通りであったため当初諦めていました。

    しかしXPで操作した時にIndex再生成が走らないためもしかしたらVistaでも行けるのでは?と考えていました。

    納得の回答です。

     

    Win7のXPモードでも調べてみてそちらが問題なければVistaからWin7への乗り換えを検討しようと思います。

    • 回答としてマーク ugen 2010年6月10日 9:11
    2010年6月10日 9:10