- - PR -
MDBファイルはADO.NETでのアクセスでも壊れやすい?
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-12 18:54
共有しているMDBファイルは壊れやすい、と酷評する書き込みを多く見かけるのですが、ADO.NETによるアクセスでもやっぱり壊れやすいのでしょうか?
MDBファイルはデータだ、と見立てた場合(当然他にも色々入ってますが)に、Access(或いはJetエンジン?)がタコなだけで、後発のADO.NETなら改善されて当然、という様な気がしないでもないのですが…。 ファイルを共有する形で使用される限り、Accessで使おうが、ADO.NETで使おうが、壊れやすさはやっぱり一緒でしょうか?(MDBファイルの構造が変わらないので、外野でいくら改善しても壊れやすい?) 因みに、課内DBは同時アクセス数が少ないせいもあって、まだ1度も壊れたことはありません。MDBファイルの構造や壊れる仕組みまでは把握しておりませんが、一般論をお聞きしたく、投稿いたしました。 | ||||||||
|
投稿日時: 2006-10-12 19:26
こんにちは。
壊れやすいかどうかは使用する頻度や同時書き込みのタイミングなどにも影響 されるとは思いますが、少なくとも SQL Server や Oracle のような RDBMS よりは脆いと思います。 ご自身でも書かれているように、アクセス方法が DAO でも ADO でも、それこ そ ADO.NET でも、結局のところ mdb ファイルへ実際にアクセスするのは Jet エンジンだと思いますので、その部分がネックになってくるのではないでしょ うか。
壊れないときは壊れないが、壊れるときは一瞬…ということかもしれませんね。 そもそも Jet エンジンは同時にアクセスされることを想定して設計されていない という話もありますし(過去ログで見た記憶がありますので、調べてみてください) そういったものに対して限界以上の動きを期待するのも間違いなのかなとも思い ますね。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2006-10-12 19:29
> 共有しているMDBファイルは壊れやすい、と酷評する書き込みを多く見かけるのですが、
いや、酷評ではなく、マイクロソフトのサポート情報として共有して同時アクセスする場合は壊れることがある、と明言されていたはずです。 だから、使わないほうがいいですよ、ということですね。 MSDEやSQL Server 2005 Expressなら無償で使えますからそちらを使うことを検討すべきだと思います。 | ||||||||
|
投稿日時: 2006-10-12 19:47
ぽぴ王子さん、どっとねっとふぁんさん、こんばんわ。
データベースの接続からやり直してみたところ、選択時に「ネイティブJetプロバイダを使用して」って書いてありました。 ADO.NETでもJETエンジンを使っていると思っていなかったので、調べ損ねていました。
マイクロソフト自身が明言していたんですね。 簡単に壊れる、というコメントを見てから調べ始めたので、キーワードの問題ですが上位に来なかったマイクロソフトのサポート情報は見ておりませんでした。 個人が作ったデータベース(とフォームとマクロ)とはいえ、課の(そこそこ)重要なDBで、壊れては困るので、早めに移行できるようにしたいと思います。 | ||||||||
|
投稿日時: 2006-10-12 20:18
酷評でもなんでもなくて、シングルクライアントをターゲットとして開発したデータベースですからね。SQL Server相当の機能をシングルクライアントで使ったら、どう考えてもオーバースペックでしょ。 その辺のことは「Microsoft Jet は、高い負荷がかかるサーバー アプリケーション、多くのプロセスによって同時に使用されるサーバー アプリケーション、毎日 24 時間無停止で実行されるサーバー アプリケーションでの使用は想定されていません。」と明記されています。 _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||||||
|
投稿日時: 2006-10-12 22:25
甕星さん、こんばんわ。
Accessと市販の解説書だけでデータベースを作っていたので、そこまで気付いておりませんでした。 調べたときに辿り着いたサイトで、必ずバックアップしなさい、最適化をしなさい、等々の脅し文句が書かれていまして、驚いたと同時にADO.NETでも同じなのか、という疑問が湧いたわけです。 結果としてはJetエンジンを使っているのでダメなことが解りましたが 先日までAccess2003からSQL Server 2005 Express Editionへの繋ぎ方が解らず、最近ようやく繋がるようになりまして(名前付きパイプを使用する、だったかな?)、データの移行は徐々に進めているところです。 趣旨は変わりますが、ネットワークで共有する使い方でAccessのデータベースを構築している人達って、壊れやすいってことに気付いてないことが多いんじゃないかと思うんですが…。解説本には書いてありませんし…。 壊れないのは、たまたま私の所のように頻度や同時書き込み数が少ない使い方がほとんどだからでしょうか MSDEも使えることは知っていましたが、私自身、当時はMSDEにするメリットを感じてませんでしたし(MSDEを理解していなかったし)。SQL Server 2005 Express Editionは簡易管理ツールが公開されているので、GUIで操作できてとっても楽ですね。 [ メッセージ編集済み 編集者: LoveDevice1973 編集日時 2006-10-12 22:33 ] | ||||||||
|
投稿日時: 2006-10-12 22:51
さかもとです。
入門書などでAccessをベースとしたものが多いのは ・DBMSのインストールなどへ難しいことを書かなくて良い ・Office製品が入っているPCならすぐに利用可能(バージョンによりますが) ・初心者にも簡単にメンテナンスが可能(バックアップもコピー&ペーストでよいし) などなどかと思います。 壊れる壊れないは確かにありますが、パパッと簡単な仕組みには扱いやすい製品だとは思います。 ずいぶんと昔、毎日15万件くらい取り込んでは更新、削除とか行うシステムをAccessで作ったことがありますが、それは一度も壊れたりしませんでした(同時ユーザーが5名程度ですけど)でも、せいぜい毎日数十件の追加のシステムでは毎月1度以上壊れてました(同時ユーザーが2名?)作り方はどちらもめちゃくちゃだったとは思いますが・・・。 | ||||||||
|
投稿日時: 2006-10-13 01:22
データストア、エンジン、アクセスするためのオブジェクトと分けて考えると良いわかりやすいかも知れませんね。
恐らく、そういうことだと思います。 既存のシステムで既にアクセスを使っている環境をメンテしてますが、オートナンバー型で値が重複するのはよくありますし、最適化、リペアしないとアクセスできなくなるなどの症状が出たりしますね。 _________________ R・田中一郎 - R.Tanaka.Ichiro’s Blog |