かわろぐ

技術、ボルダリング、セキュリティ、その他もろもろ

MENU

WinCE上でのSQLServerCEの問題

ImagineCup2011日本大会への出場に向けて日々活動していて春休みなんかない状態です^^;
その開発の中で一番はまったことをメモしておきます.

環境

  • Windows Compact 7
  • SQLServer Compact Edition 3.5
  • .NET Compact Framework 3.5


データベースに読み書きするプログラムを書いていたんですが,次のようなエラーが

Error
A native exception has occurred in XXX.exe.
Select Quit and then restart this program, or select Details for more information.

Error
ExceptionCode: 0xc0000005
ExceptionAddress: 0x00cf1e20
Reading: 0x01f57e7e

   at NativeMethods.GetKeyInfo(IntPtr pTx, String pwszBaseTable, IntPtr prgDbKeyInfo, Int32 cDbKeyInfo, IntPtr pError)
   at SqlCeDataReader.FillMetaData(SqlCeCommand command)
   at SqlCeCommand.InitializeDataReader(SqlCeDataReader reader, Int32 resultType)
   at SqlCeCommand.ExecuteCommand(CommandBehavior behavior, String method, ResultSetOptions options)
   at SqlCeCommand.ExecuteReader(CommandBehavior behavior)   at ApplicationThreadContext._InternalContextMessages(WM wm, Int32 wParam, Int32 lParam)
   at EVL.EnterMainLoop(IntPtr hwnMain)
   at Application.Run(Form fm)
   at Program.Main()

原因は英語文献を読んでいるとどうやらSQLServerのバグらしく,MSから最新版SP2をダウンロードしてこいとのこと...しかし,開発マシンにもCompact7にも最新版を当ててもなおらずしばらく途方に暮れていました.
試しにということで,必要なSQL関連のDLLを全部コンパイル時にexeのあるディレクトリにコピーするよう設定して動作させたら無事動いてくれるようになりました.

とほほ・・・