VBAで共有フォルダのSQLiteにアクセスする

どうも。へっぽこSEのアシアです。
小さめのシステムを開発していてDBにSQLiteを使っています。
で、それを共有フォルダに置いて、複数の端末から参照するようにしているのですが、それ関連のトピックス。

DataSource

VBAからvbRichClientを使ってOpenする場合は、単純。

Dim objConn As New vbRichClient5.cConnection
objConn.OpenDB("\\端末名\~.db")

C#からSystem.Data.SQLiteを使ってOpenする場合は\を増やさないとアクセスできない。なんで?

SQLiteConnection con = new SQLiteConnection();
con.ConnectionString = @"Data Source=\\\\端末名\~.db";
con.Open();

ちなみにパスワードがかかっている場合はこちらも参照してください。


Defender

なんかWindows Defenderが生きていると、共有フォルダのOpenにやたら時間がかかる。
C#からSystems.Data.SQLiteを使って2秒くらい。
ExcelVBAからvbRichClientを使うともっと顕著で3秒くらい。
Openする度にこんな時間かかっていたら目も当てられない。

レジストリやPowerShellからDefenderを無効化しようとしても改善しない。
セキュリティソフトをインストールするか、無効化するフリーソフトDefender Controleを使ったら改善しました。
そんでもって、この現象が起こるPCと起こらないPCがある。
Windows10の大型Updateをきっかけに発現するPCもあるので、この原因に行き着くまでに右往左往する。
同じWindows10のバージョンで、同じネットワークアダプタを使っているPCでも起こったり起こらなかったりするので、確実な再現条件がよくわからん…。
セキュリティソフトをインストールしているのにWindowsUpdateで現象が出たとしても、セキュリティソフトを再インストールすると改善するPCもあるらしい。
検証用ツールとか作っておく必要があるかなぁ。


他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)