元はSqlCeを使っているシステムだった。
それをSqliteに乗り換えようと先週あたりから着手している。
構成としては、Windowsサービスがあり、
Windowsサービスが順に3つのバッチを上げるといった形のものだ。
で、個々のバッチはエラーを出さないのだがなぜかWindowsサービスがエラーを出していたので首をかしげていた。
unable to open database file
でググってみると大概はディレクトリのアクセス権に関するものだった。
そこは問題ない。問題あればそもそもバッチも動いてないだろう。
エラー箇所が一か所だったのでそこを見てみる。
ん?Openした後にこのコード入ったらまたOpenするじゃん
と。と言うわけでそこのコードは修正した。
そもそもConnectionをOpenした段階でファイルがなければ作成されるわけであらかじめOpenしておく必要はなかった。
※閉じればいいんだけど
が、しかし
相変わらず例外は出た。
最終的には複数個所でOpenしているのが問題で、
更にそれを閉じていなかったのが恐らく原因だった。
※恐らくと言うのはSystem.Data.SqliteやSystem.Data.SqlserverCeのコードを読んだわけではないので確証がない
たぶんSqlCeはよろしくやってくれていたのだろう。
しかしSqliteはそこは面倒見てくれなかった、そういう事なんじゃないかと予想。
最終的にはConnection.Openの前にStateを見てOpenでなければOpenするという方法でとりあえず回避した。
本当は都度都度Closeしたほうが良いのだろうけれど。
0 件のコメント:
コメントを投稿