- PR -

mdbファイル同時アクセス時のエラー処理について

投稿者投稿内容
koujin
会議室デビュー日: 2006/11/30
投稿数: 11
投稿日時: 2006-11-30 19:27
現在C/S環境でサーバーにmdbファイルを置き、そのテーブルだけを参照してフォーム等は全て.NETで作成するアプリケーションを考えております。
(.NETで作成した実行ファイルをそれぞれのクライアントに配置)

クライアント数は10台以下で扱う情報もさほど重要ではありませんが、データの更新・追加もあるため排他処理が必要なのだろうと思うのですが、どのような処理が一般的なのか良く分かりません。
初心者で申し訳ないですが、通常どのような処理をするのが宜しいのでしょうか?
また、このような規模でサーバーのmdbファイルのテーブルを参照・更新するような事は正しい事なのでしょうか?

ご回答宜しくお願い致します。

やりたい事はクライアントからは同時に複数台からmdbファイルのテーブルが参照出来る状態で、更新・追加のさいは何か排他処理がかける?ような事がしたいと思っております。

開発環境:VS2003 .NET
使用言語:VB
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-30 19:30
引用:

koujinさんの書き込み (2006-11-30 19:27) より:

クライアント数は10台以下で扱う情報もさほど重要ではありませんが、データの更新・追加もあるため排他処理が必要なのだろうと思うのですが、どのような処理が一般的なのか良く分かりません。


MDB であれば、トランザクション処理オンリー。

引用:

また、このような規模でサーバーのmdbファイルのテーブルを参照・更新するような事は正しい事なのでしょうか?


ローカル以外の使用用途であれば、私ならば MSDE (無償) などを使いますね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2006-11-30 19:59
引用:

koujinさんの書き込み (2006-11-30 19:27) より:
やりたい事はクライアントからは同時に複数台からmdbファイルのテーブルが参照出来る状態で、更新・追加のさいは何か排他処理がかける?ような事がしたいと思っております。


スタンドアロンと思って作っていたのがデータが多過ぎて一時的に2台で・・というケースはありましたが、その時はトランザクションだけ落とすように書き替えました。更新処理は後回し(トランザクションから)でないと怖くて。一時的な集計処理だけだったので何とかなりましたが(汗)。

私もじゃんぬねっとさんと同じで、同時に複数台からとわかっているのであれば最初からMSDE(SQLServer2005/ExpressEdition)を使うべきだと思います。
koujin
会議室デビュー日: 2006/11/30
投稿数: 11
投稿日時: 2006-11-30 20:04
ご回答ありがとうございます。

じゃんぬねっとさんの回答によりますとmdb使用の場合は処理が成功したか、失敗したかしか確認できないという事でしょうか?

やはり、無償のSQLServerを使用した方が良いのでしょうね。
OLACLEの経験はあるのですがSQLServerの経験が無く、まして一人で一からDB構築の経験も無い為不安です。

SQLServerなら排他処理が可能と言う事でしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-30 20:43
引用:

koujinさんの書き込み (2006-11-30 20:04) より:

じゃんぬねっとさんの回答によりますとmdb使用の場合は処理が成功したか、失敗したかしか確認できないという事でしょうか?


いえ、トランザクション処理だけでいくのが一般的だという意味です。
('オンリー' から、"成功したか、失敗したか確認できない" を読み取ってしまうとは...)

引用:

やはり、無償のSQLServerを使用した方が良いのでしょうね。
OLACLEの経験はあるのですがSQLServerの経験が無く、まして一人で一からDB構築の経験も無い為不安です。


Oracle よりは簡単だと思います。
無償に拘るのであれば、PostgreSQL などでも良いでしょう。

引用:

SQLServerなら排他処理が可能と言う事でしょうか?


排他処理が不可能だから、薦めているわけではありません。(不可能ではないですから)

MDB は同時アクセス自体に向いていないという意味です。
最悪ファイルが壊れてしまうことがあります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2006-11-30 21:06
やって出来ないわけではない・・のはたしかですが、怖くてやりたくないというのも事実でしょうね>mdb。

http://office.microsoft.com/ja-jp/access/HP052408601041.aspx?pid=CH062526671041
http://www.ruriplus.com/msaccess/Exp/exp0160.htm
http://www.naboki.net/access/achell/achell_01.html
http://www.naboki.net/access/achell/achell_02.html
koujin
会議室デビュー日: 2006/11/30
投稿数: 11
投稿日時: 2006-12-01 00:43
皆様ご回答有り難う御座います。

やはりSQLServerに挑戦してみようかと考えが固まってきました。
ただ、一点教えて頂きたいのですが、たしかオラクルの場合はクライアントPCにもオラクルクライアントをインストールしていたと思うのですがSQLServer2005/ExpressEditionの場合もクライアント側に何かインストールする必要があるのでしょうか?

ご回答宜しくお願い致します。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2006-12-01 02:06
引用:

koujinさんの書き込み (2006-12-01 00:43) より:
ただ、一点教えて頂きたいのですが、たしかオラクルの場合はクライアントPCにもオラクルクライアントをインストールしていたと思うのですがSQLServer2005/ExpressEditionの場合もクライアント側に何かインストールする必要があるのでしょうか?


SQLServer2005をダウンロード・展開すればinstallフォルダにNativeClientも含まれていたと思います(sqlncli.msiだったかな)。OLEDBでの接続ならMDACでも良かったかと。

#自信なしなのでツッコミ希望(汗

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