C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■102617 / 1階層)  JRO を利用して READ キャッシュを更新
□投稿者/ 魔界の仮面弁士 (3720回)-(2023/11/26(Sun) 11:10:00)
No102614 (eb さん) に返信
> それで私も早速やってみようと参照設定して以下を実行したのですが、
> Set je = New JRO.JetEngine
> で「クラスが登録されていません」となって進みません

そのファイルがあった場所は
 C:\Program Files (x86)\Common Files\System\ado\msjro.dll
ではありませんでしたか?

Vista / Server 2008 以降での JRO の利用は推奨されていなかったと思いますし、
そもそも 64bit 版の JRO が提供されたという話も、私は聞いたことがありません。
32bit 環境であれば、現在も使用可能ですけれどね。


> VB に詳しい皆様の間で、Jet エンジンでの多人数同時使用のために
> JRO を利用して READ キャッシュを更新するというノウハウがおありだと知りました。

JRO の JetEngine.RefreshCache メソッドのことを指しておられるのですよね。
https://learn.microsoft.com/en-us/previous-versions/office/developer/office-2007/bb237216%28v%3doffice.12%29?WT.mc_id=DT-MVP-8907

どのバージョンの Microsoft Access をお使いなのかは分かりませんが、
現行バージョンにおいては、あえて OLE DB Provider を使う必要は無いと思いますよ。
Access VBA なら、DAO(ACEDAO も含む) の方が融通が利くと思いますし、
パフォーマンス面でも DAO の方が有利かと。

CurrentProject.Connection との併用ならば、JRO が使われることもありますが、
CodeDb や CurrentDb を使っているのであれば、単に DAO.Recordset を開く前に
「DBEngine.Idle dbRefreshCache」を呼び出すだけで済みますので、
JRO を追加で参照設定する意味がありません。


(1) JET の Read キャッシュを強制更新するには(Read キャッシュの内容を強制的にディスクから読み込みなおす)
 DAO ならば DBEngine.Idle dbRefreshCache
 ADO ならば、JRO.JetEngine の RefreshCache メソッド
 ※既定の Read キャッシュ更新間隔は 5000 ミリ秒

(2) JET の Write キャッシュによる書き込み遅延を防いで同期的に書き込みを行わせるには
 暗黙トランザクションを用いず、常に明示的なトランクザクションを使えばよい。
 すなわち BeginTrans / CommitTrans メソッドを常に利用するようにする。
 ※暗黙トランザクションによる非同期書き込みの場合、既定の書き込み遅延時間は 500 ミリ秒

(3) OS の Write キャッシュをバイパスして、ディスクに直接書き込みを行わせるには
 DAO ならば、DBEngine.Workspaces(0).CommitTrans dbForceOSFlush
 ADO ならば、CurrentProject.Connection.Properties("Jet OLEDB:Transaction Commit Mode").Value = 1
 ※Write キャッシュをバイパスすると書き込みパフォーマンスが犠牲になるため、常時有効化することはお奨めしません。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←JRO を利用して READ キャッシュを更新 /eb 返信無し
 
上記関連ツリー

JRO を利用して READ キャッシュを更新 / eb (23/11/26(Sun) 07:48) #102614
Re[1]: JRO を利用して READ キャッシュを更新 / WebSurfer (23/11/26(Sun) 09:35) #102615
JRO を利用して READ キャッシュを更新 / 魔界の仮面弁士 (23/11/26(Sun) 11:10) #102617 ←Now
  └ Re[2]: JRO を利用して READ キャッシュを更新 / eb (23/11/26(Sun) 10:32) #102616
    └ Re[3]: JRO を利用して READ キャッシュを更新 / eb (23/11/26(Sun) 11:34) #102618
      └ Re[4]: JRO を利用して READ キャッシュを更新 / 魔界の仮面弁士 (23/11/26(Sun) 13:25) #102620
        └ Re[5]: JRO を利用して READ キャッシュを更新 / eb (23/11/26(Sun) 17:35) #102621
          └ Re[6]: JRO を利用して READ キャッシュを更新 / 魔界の仮面弁士 (23/11/26(Sun) 22:49) #102622
            └ Re[7]: JRO を利用して READ キャッシュを更新 / 魔界の仮面弁士 (23/11/27(Mon) 19:26) #102623
              └ Re[8]: JRO を利用して READ キャッシュを更新 / eb (23/11/28(Tue) 05:04) #102626 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信