@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ADO.NET+JET4.0を使用してのMDBアクセスについて

1
投稿者投稿内容
koujin
会議室デビュー日: 2006/11/30
投稿数: 11
投稿日時: 2007-01-19 10:13
いつもお世話になっております。

色々文献を調べたのですがどうしても分かりませんでした。
宜しくお願い致します。

現在、予算の都合上どうしてもMDBデータベース+JET4.0を使用し、フォームなどは.NETで作成するというアプリケーションを構想中ですが、データの整合性・信頼性を高める為、最大限の努力をしたいと思っております。(MSDEの導入は今のところ考えておりません)

具体的には
@毎日MDBファイルの最適化・バックアップを行う
AJETの読み込みキャッシュ・書込みキャッシュを使用しない
BOSキャッシュをバイパスする
C明示的なトランザクションを行う
などを考えております。

ですが文献ではADO(レコードセット)の記述しかなく、ADO.NET(データセット)を使用する場合にA〜Cの処理が必要なのかがわかりません。
また必要であるならばどのように実装すれば良いのかも分からず、困っております。

元々、ADO.NET+JET4.0でJETのキャッシュ処理を操作する事は不可能なのでしょうか?

どなたかご回答宜しくお願い致します。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2007-01-19 10:40
引用:

koujinさんの書き込み (2007-01-19 10:13) より:
ですが文献ではADO(レコードセット)の記述しかなく、ADO.NET(データセット)を使用する場合にA〜Cの処理が必要なのかがわかりません。


接続文字列として、パラメータを渡せばよい。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpado260/htm/mdrefjetprovspec.asp

引用:

現在、予算の都合上どうしてもMDBデータベース+JET4.0を使用し、フォームなどは.NETで作成するというアプリケーションを構想中ですが、データの整合性・信頼性を高める為、最大限の努力をしたいと思っております。(MSDEの導入は今のところ考えておりません)


動作環境への配慮もお忘れなく。
http://support.microsoft.com/kb/303528/JA/
koujin
会議室デビュー日: 2006/11/30
投稿数: 11
投稿日時: 2007-01-19 16:43
ぬしさん、早速のご回答ありがとう御座いました。
そういうやり方があったのですね。。。

もう少し理解を深めてチャレンジします。
ありがとう御座いました。
koujin
会議室デビュー日: 2006/11/30
投稿数: 11
投稿日時: 2007-01-22 08:21
ぬしさん先日は有難う御座いました。
ご回答の通り接続文字列に以下のようなパラメータを設定しましたが、どのようなパラメータを渡せば良いのか良く分かりませんでした。
これで読み込み・書込み・OSキャッシュ共使用しない設定になるのでしょうか?
なおACCESS2003を使用しておりますが、Engine Type は 5 にすべきなのでしょうか?
ご回答宜しくお願い致します。

'接続パラメータ設定
m_dbconnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath    
m_dbconnstr &= ";Mode=Share Deny None"
m_dbconnstr &= ";Jet OLEDB:Engine Type=4"
m_dbconnstr &= ";Jet OLEDB:Database Locking Mode=0"
m_dbconnstr &= ";Jet OLEDB:Global Partial Bulk Ops=2"
m_dbconnstr &= ";Jet OLEDB:Global Bulk Transactions=1"
m_dbconnstr &= ";Jet OLEDB:Transaction Commit Mode=1"
m_dbconnstr &= ";Jet OLEDB:User Commit Sync=1"
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-22 09:34
引用:

koujinさんの書き込み (2007-01-22 08:21) より:

ご回答の通り接続文字列に以下のようなパラメータを設定しましたが、どのようなパラメータを渡せば良いのか良く分かりませんでした。これで読み込み・書込み・OSキャッシュ共使用しない設定になるのでしょうか?なおACCESS2003を使用しておりますが、Engine Type は 5 にすべきなのでしょうか?


リファレンスを読みましょう。ADO を対象にしていますが、同じことです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
koujin
会議室デビュー日: 2006/11/30
投稿数: 11
投稿日時: 2007-01-24 08:27
じゃんぬねっとさんご指摘ありがとうございます。
申し訳ございません、リファレンスを読んだのですがよく理解できませんでした。
なんとかヒントを頂けないでしょか?宜しくお願い致します。
尚、以下の接続文字列を追加すると”インストール可能なISAMドライバーが見つかりませんでした。”とエラーになってしまいます。

m_dbconnstr &= ";Jet OLEDB:Transaction Commit Mode=1"
m_dbconnstr &= ";Jet OLEDB:User Commit Sync=1"

JETのキャッシュを使用せずにすぐにディスクに書き込ませるつもりで付け加えたのですが回避する方法はありますでしょうか?


渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-01-24 10:24
引用:

JETのキャッシュを使用せずにすぐにディスクに書き込ませるつもりで付け加えたのですが回避する方法はありますでしょうか?



目的が不明なんですが、JET のキャッシュを回避してみたところで、その後ろにはディスクキャッシュが待ち構えているんじゃないでしょうか。

それをも回避するためには MDB 接続を一旦すべて閉じる必要があって、MDB 接続を閉じる時にはもれなく JET のキャッシュもフラッシュされるはずで、問題にならない気がするのですが。。。
koujin
会議室デビュー日: 2006/11/30
投稿数: 11
投稿日時: 2007-01-24 13:07
渋木宏明さん、ご回答ありがとうございます。

目的はJETで使用される読み込みキャッシュ・書込みキャッシュをフラッシュして更新したデータがすぐに反映されていて欲しいのですが。
初期設定ではディスクから読み込みキャッシュへの再読み込みは最大で5秒と記述がありましたので。

読み込み時は読み込みキャッシュをフラッシュして最新のデータが読み込まれ、書込み時は同じレコードを更新する場合に整合性が保たれるよう即、書込みが出来るようにしたいのですが。

JETがマルチユーザー環境に不向きなのは承知しておりますが、どうしても避けられずなんとか出来る限りの対処はしたいと考えております。
宜しくお願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)