- ベストアンサー
ACCESSデーターベースの差分バックアップは可能?
- ACCESS初心者で、色々検索しては見るものの納得できる答えが見つからず、質問させていただきます。会社で書類を作成する為にACCESS2003を使用しています。
- ネットワーク上のファイルサーバーにデーターベースを置き、5台のPC(accessにて)でそのデーターベースを読み取っては書き換える作業をしているのです。しかし2台以上のPCでデーターベースにタイミング良くアクセスすると、固まってしまい、それが頻繁に起こります。
- 各PCにデーターベースを分散し、PC内で読み書きさせる事により固まる事を防ごうと考えます。ただその場合各PC毎にデーターを更新することになり、他のPCから最新のデーターが引き出せなくなりますので、更新された分(差分)のみファイルサーバーの元データーベースにバックアップさせる事により、各PCで更新した全てのデーターが元データーベースに反映される事になると考えたのですが、そのようなソフトが見当たりません。初心者質問で申し訳ございませんが、このような「差分バックアップ」が可能なソフトをご存知ないでしょうか?又は同等の処理が出来る方法でも構いません。よろしくお願いいたします!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>確認した所、既に「共有モード」で「ロックしない」「レコードロックする」の状態になっていました この設定になっていて固まってしまう状態では根本的にマルチ環境での処理に誤りがあるとかも疑わしいですね。(と言っても予測ですが) サーバー上のAccessとクライアントのAccessとのフロント・エンドで環境作る際で何かサーバー側で処理を実行させるイベント等が発生させている時に他クライアントがサーバー側のテーブルにアクセスするとデットロックしてしまうとかでしょうか?SQLServerなどは通常サーバー側で処理した方がレスポンスは良くなるのですが。 1台のクライアントで固まることも無く処理できていて他のクライアントがサーバー側のテーブルを開こうとすると固まるようであればやはり導入した会社で対処してもらうのが一番ですが。導入時から同様の状態が続いているのであれば賠償問題にもなりうるトラブルです。 差分ファイルの更新としては・・ サーバー側から更新するレコードを各クライアントのPCにレコード単位で抽出してワークテーブルなどに一旦保存しそのレコードを修正後サーバー側テーブルに更新をかける方法でしょうか。更新後ワークテーブルのレコードは削除しての繰り返しですが。 サーバー側にアクセスするのはそのレコードを抽出する時と更新をかける時だけになります。 ある程度Accessの知識があれば出来ます。
その他の回答 (3)
- O_cyan
- ベストアンサー率59% (745/1260)
デッドロックを起こしている? 複数のファイルにまたがる排他制御を行う時にユーザ1がファイルAをロックしてファイルBのロック解放を待ち別のユーザ2がファイルBをロックしてファイルAのロック解放を待ちいつまでたっても処理が進まないケースに陥ることがあります。デッドロックはプログラムの設計に問題がある場合に発生します。(ロジック等分からないので一般的にという事で・・) >5台のPC(accessにて)でそのデーターベースを読み取っては書き換える作業 詳細まで分かりませんがサーバー上のデータベースはAccess?SQLServer?Oracle? 5台のPC(accessにて)で・・とあるので小規模のDBとしてサーバー上もAccessとして予想で回答します。 各PCのフロントエンドとして使用しているAccessがサーバーのAccessから各PCのテーブルに単純にリンクテーブルとしてサーバー上のAccessのテーブルを使用している場合。 ツールにあるオプションの排他モードか共有モードかレコードロックの状態は全てのレコードなのか編集済みレコードなのかロックしないのか確認してみてください。 クライアントの各PCのAccessの設定を既定の開くモードを共有モードにしてロックをレコードレベルでロックして開くに変更すれば回避できるのですが。(この辺はロジック等にもよりますが) 排他モードではなく共有モードでレコードレベルでロックになっていてデッドロックを起こしているのでしょうか? 差分を更新とかすることも出来ますが開発が必要になります。
補足
>排他モードではなく共有モードでレコードレベルでロックになっていてデッドロックを起こしているのでしょうか? 確認した所、既に「共有モード」で「ロックしない」「レコードロックする」の状態になっていました。 やはり根本を解決しないと駄目なのでしょうか・・・
ご要望を実現するのは困難だと考えます。 1.複数のPCで同一レコードの書き直しが発生した場合、どうやって整合性を取るか? 2.「同一レコードの書き直し」はないとして、「書き直されたと同時に元データを更新」が可能であれば(固まらない)最初から面倒なことをせず「元データを更新」すればよいでしょう
補足
ご回答ありがとうございます。 >最初から面倒なことをせず「元データを更新」すればよいでしょう 現状がそうなっております。それをすると固まるので困っています。 accessは難しいソフトですね!
- fallen_angel
- ベストアンサー率12% (287/2339)
補足
ご回答ありがとうございます。 リンクをたどってみたのですが、どのソフトが該当するのかわかりませんでした。 もしかしたら文章が下手なので、私の意図が伝わらずご迷惑をお掛けしたかもしれませんね!
お礼
やはり根本的な解決が必要そうですね! 賠償問題までは発展しないと思いますが もう一度話し合い、一から企画し直そうと思います。 ありがとうございました!