• 締切済み

Access2007でldbファイルが消えず困っています。

Access2007でldbファイルが消えず困っています。 環境 OSはXP(SP2) … サーバ/クライアント共 Office2007Pro … サーバにはインストールしてません SQL server2000 ウィルスバスター2011 Pc-Anywhere クラサバの環境で、サーバ側にデータを、クライアント側にはプログラムを配置しています。 5台のクライアントからサーバのデータを更新しています。 (サーバはデータ.mdbを、クライアントはプログラム.accdb) 困っているのは、何らかのタイミングでldbファイル(mdbを起動したときに勝手に立ち上がるもの)が消えなり、サーバの電源を入れ直して、ldbファイルを削除しない限り、システムが機能しなくなることです。 一応、データを書き込んでいるときは、ldbが発生し、書き込みが終わるとldbが消える動作をきちんとしていることを確認しています。が、何らかのタイミングでldbが消えないことがあるんです。 本来はaccess2000で作成したものでしたが、マシンの入れ替えに伴いaccess2007に変更しました。 access2000の時は排他ロックなど掛かったことはなかったんですが2007に切り替えた途端、この有様です。 元々は、データ.mdbはデータ.accdbだったんですが、頻繁にロック(読取専用)が掛かるので、苦肉の策でデータ側のみ2003形式にダウンさせました。そうしたところ、ロックが掛かる回数は激減しましたが、それでも1日に1・2回程度は排他ロックが掛かり、サーバの電源入れ直し、ldbファイルの削除をしている状況です。 原因がはっきりせず困っております。 システムが機能しなくなるのは、業務がストップしてしまうことなので、とても焦っております。 Accessに詳しい方、良いお知恵を拝借願います。 ※ mdbの名称は仮称です。

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

チラッと頭を掠めるのは、閉じる時に最適化・・の設定だと問題が発生したような? Accessは根本的に『共有』で機能するようには出来ておりませんので 相当作りこまないと危険です。 あっさりと壊れてしまえば分かりやすいのですが、 他のレコードが変更されてしまった事が有りました。Acc97の時です。 基本的にはよろずやさんの意見に賛成です。

回答No.2

以前にaccessでの基幹システムを扱った事がありますが 5台程度なら全く問題なく作業できました。 データベースへのアクセスの際に排他の処理をきちんと行っていますでしょうか? ldbファイルはmdbを開いただけでできるworkファイルの様なものだと思います。 データにアクセスする部分の見直しが必要だと思います。

junatol
質問者

補足

ご回答ありがとうございます。 自分が疑問に思うのは、正常ならずっと正常に動作し、ダメなら初っ端からダメばら良いんですけど、最初は正常に動いているのに、何かのタイミングでサーバ側のデータ.mdbが読取専用モード(ldbファイルが残る)になってしまいトラブってしまうことです。 >データベースへのアクセスの際に排他の処理をきちんと行っていますでしょうか? 一応、[規定のレコードロック] オプションは "編集済みレコード" に設定して、 [レコードレベルでロックして開く] オプションもONにしています。 >データにアクセスする部分の見直しが… OPENしたサーバ側のmdbはちゃんとcloseしています。(VBA上) ※こういうことではないのでしょうか? 昨夕、accessのオプションでセキュリティーの信頼できる場所で、使用しているパスをすべて設定したところ、本日はトラブルなく業務が遂行しました。 が、access2000時代は何ら問題なかったのに、同じmdbで2007にしたら、良く業務がストップしてしまうので納得していません。(サーバのOSは2000からXP、クライアントはxpからxp) あと、最適化ですが、2007よりDB終了時に最適化する機能が追加されましたが、使用していません。 ユーザの使い方で、database.mdbになってしまうのが嫌なので… また、何か情報お願いします。

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.1

mdbはデータベースではありません。 単なるバイナリファイルです。 ※データベースのようなことができるだけ。 これを複数のPCから同時に更新したら、 かなり無理っぽいです。 Accessの限界です。 早急に SQL server2000 に移行しましょう。

関連するQ&A

  • アクセス共有使用中、.ldb付きのファイルの利用

    アクセスをNASサーバー上で共有で使用しています。 ほとんどの人は参照権限しか有りません。 更新・削除等の権限者は3名です。 共有ファイルのアクセスのデータベースを参照すると、.ldb ファイルが作成されますがその件について質問があります。 質問1 参照権限者は70名くらいです。どのPCで使用しているか特定することはできますか。 質問2 参照権限者がアクセスファイルを開いている時(.ldb ファイルが作成されているとき)、のその元ファイルをコピーして使用(データ入力等)をしても問題有りませんか。 質問3 更新・削除等の権限者がアクセスファイルを開いている時(.ldb ファイルが作成されているとき)、のその元ファイルをコピーして使用(データ入力等)をしても問題有りませんか。 質問4 何かアクセスのエラーで.ldb ファイルが消えないこともありますか? .ldb ファイルが1日消えないことも有り困っています。 (原則は、参照権限者がアクセスを使用するときは、NASからローカルに保存して使用することになっています。)

  • MS Accessを共有した際にファイルが壊れるのを回避する方法

    ちょっとしたツールをAccessで開発したいのですが、 Accessファイルを共有するとファイルが頻繁に壊れると伺いました。 そこで以下のような回避策を考えてみたのですが、 効果はありますでしょうか。 これでは、あまり意味がないとか、他に注意したほうが良い点等ありましたら、アドバイスいただければと思います。 なお、ツールは、50名位が使用(同時アクセスは3名~4名程度)予定で、 サーバ上にメインのmdbファイル(以下「サーバmdb」)を、各クライアントにもそれと連携するmdbファイル(以下「クライアントmdb」)を置くことを想定しています。 (1) データは全てサーバmdbで保持する。クライアントmdbには、入力用のフォームと、サーバmdbから取得したデータを一時的に保持するテンポラリのテーブルを持つ。 (2) クライアントmdbからサーバmdbにアクセスし、必要なデータをクライアントmdbにインポートする。 (3) クライアントmdbで、取り込んでデータをもとに、データの追加・修正を行い、当該データをサーバの所定のディレクトリにCSVで出力する (4) サーバmdbは、日次で、所定のディレクトに配置された、クライアントmdbから出力されたファイルを読み込み、データを更新する (5) (4)の読込み・更新作業中は、クライアントmdbからサーバmdbにはアクセスしない(外部ファイルで制御) 以上です。 要は、クライアントmdbが、直接サーバmdbを更新しないようにし、参照のみにするということです。 よろしくお願いします。

  • サーバにはACCESSがインストールされていなくても、データの管理は可

    サーバにはACCESSがインストールされていなくても、データの管理は可能ですか? サーバOS:WinXP(SP3) クライアントOS:サーバと同じ サーバにはデータ部を配置(data.mdb) クライアントにはプログラム部を配置(program.mdb) クライアント側からデータを入力し、サーバのdata.mdbへデータを書き込みます。 このような状態で、サーバにはAccess(Officeすべて)をインストールしていなくても データの管理は可能ですか? サーバから直接data.mdbの参照等は一切できないでしょうが、データの管理について 何か問題がありますでしょうか? どなたか回答お願いします。 ※参考 Office2007Proをクライアントにインストールしてます。

  • Access共有について質問(2002-2007)

    Access共有について質問 アプリケーション部とデータ部に分割したACCESSファイル(MDB)があります。 アプリケーション部のMDBはクライアントに配置して、 データ部のMDBは、クライアントがフルアクセスできる共有サーバー(WindowsXP)のあるフォルダに配置してます。 以下、環境と現象の御説明そして調べたこと、最後に質問する流れで記述したします。 ----------- ▼環境 ----------- ●クライアント環境(アプリケーション部) testApl.mdb  ・リンク先のtestDB.mdbのテーブルに対してのフォーム登録画面を介して編集を行う。 ●共有サーバー(データ部)  ・testDB.mdb ●クライアントが使用できるバージョンは、Access2002,2003,2007を対象 ●前提として、以下のセキュリティ設定を行っています。  ★IE7→(1)「ツール」→(2)「インターネット オプション」→(3)「セキュリティ」→(4)「イントラネット」  →(5)「サイト」→(6)「詳細設定」→(7)「このWeb サイトをゾーンに追加する」→(8)「追加(A)」  で、共有サーバーを設定  ★Access2007環境のクライアントでは、  →(1)左上のOfficeボタンからメニューを表示→(2)中央下にある「Accessのオプション」をクリック→(3)「セキュリティセンター」を選択  →(4)「セキュリティセンターの設定」をクリックして、信頼できる場所に、testApl.mdbおよびtestDB.mdbのパスを設定。 ●共有するにあたり、参考にしている文献 http://office.microsoft.com/ja-jp/access/CH062526671041.aspx http://technet.microsoft.com/ja-jp/library/cc984213.aspx ----------- ▼現象 ----------- Access2002環境のクライアントがtestApl.mdbを開いてテーブルを更新した後、 そのままの状態で、別のAccess2007クライアント環境からtestApl.mdbを開き、 登録(更新)又は削除すると失敗する。 たとえば追加の場合 "登録中に例外エラーが発生しました 詳細:更新可能なクエリであることが必要です" ----------- ▼調査1 ----------- Access2002環境のクライアント(VISTA)がtestApl.mdbを開いている状態で (1)直接、Access2007クライアント(XP)環境のtestApl.mdbのリンクテーブルを開き、 表のセルにロックかかっている状態になっている(編集不可) (2)直接、Access2007クライアント(XP)環境から共有のtestDB.mdbを開くと、 ”読み取り専用”で開く (3)Access2007クライアント(XP)環境からVBS(WSH)で以下のプログラムを実行すると、Openで失敗する。 (既にMDBが開かれているような旨のメッセージ表示される) DataSource=共有サーバーのパス\testDB.mdb Set Con = WScript.CreateObject("ADODB.Connection") Set Rst = WScript.CreateObject("ADODB.Recordset") Con.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DataSource & ";Persist Security Info=False"] ----------- ▼調査2 ----------- Access2002環境のクライアント(VISTA)がtestApl.mdbを閉じた状態で (1)直接、Access2007クライアント(XP)環境のtestApl.mdbのリンクテーブルを開き、 表のセルにロックかかっている状態になっている(編集不可) (2)直接、Access2007クライアント(XP)環境からtestDB.mdbを開くと、 ”読み取り専用”で開く (3)Access2007クライアント(XP)環境からVBS(WSH)で以下のプログラムを実行すると、Openは成功する DataSource=共有サーバーのパス\testDB.mdb Set Con = WScript.CreateObject("ADODB.Connection") Set Rst = WScript.CreateObject("ADODB.Recordset") Con.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DataSource & ";Persist Security Info=False" (4)すべてのクライアント環境から、testApl.mdb、testDB.mdbを開かない(閉じてる状態) にしても、共有にあるtestDB.mdbのldbファイル(testDB.ldb)が残っている。 試しに、testDB.ldbを削除しても、すぐまた出来てしまう。(何故?) ----------- ▼質問 ----------- 1、現象の改善方法教えてください。 2、調査2の(4)のldbファイルが何故すぐ復活してしまうのでしょうか?何かプロセスが残っているように感じますが、タスクマネージャーで見る場合、何を手掛かりに探せばいいのでしょうか? ----------- 説明不足しているところありましたら、ご連絡ください。 調べ方に対してのアドバイスおよびヒントでもかまいません。 問題解決に藁をもすがる思いです。 宜しくお願いいたします。

  • アクセス インポートかファイル形式を変えたい

    壊れたアクセスファイルの中身を 新規 Microsoft Access データベース.accdbにインポートするには? 今まで開けてたのに、いきなり開けなくなった、壊れたアクセスファイルがあります。 どうしても開けないので、 新規 Microsoft Access データベース.accdb を作りそこにインポートしようとしたら、 「データベースの形式を認識できません」 となり、インポートできません。 mdb形式なのが原因なのでしょうか? win7、オフィス2010ですが、いままでmdb形式で使えてましたが Windows Updateをしたら、使えなくなりました。 mdb形式が原因なら中身はそのままで壊れたファイルをaccdbに変えたいのですが どうすればいいですか? よろしくお願いします。

  • VBからサーバ上のAccess mdbにアクセスする方式について

    クライアントのVBアプリからサーバ上のAccess mdbにアクセスしたいのですが、 データベースがAccessの場合、データを丸ごとクライアント側に持ってきて、クライアント処理になってしまうと聞きました。 サーバ上でデータセットを作成してクライアントに渡す方法があれば教えてください。 よろしくお願いします。

  • データアクセスページへのクライアントからの参照について

    サーバー上にデータアクセスページを作成し、 クライアントから参照しようとしたところ 「Microsoft Office Webコンポーネントは、データベース'c:\Program Files\・・・・\mdb\AAA.mdb'に接続できません」というエラーメッセージが表示されます。 "AAA.mdb"はデータアクセスページで使用しているMDBとなっています。 状況はデータアクセスページのhtmファイルが置いてあるフォルダの配下にmdbファイルが置いてあります。 サーバー :Windows2003Serber Access2003 クライアント:WindpwsXP Office2003(Accessなし) なにか、原因を知っている方がいらっしゃいましたら 教えていただけませんでしょうか? 宜しくお願いいたします。

  • Accessファイルの共有について

    一台のサーバーPCと数十台クライアントPCでLANを組んでいます。サーバーPCのOSはWindows2003でクライアントはWindoesXP若しくはWindows2000です。 ここで、質問はAccess2000のmdbファイルの共有についてです。 サーバーの共有フォルダーにあるmdbファイルをクライアントで共有で使っているのですがうまく開かないことがあります。具体的には数台のクライアントPCからはサーバーの共有フォルダーをクリックするとログオンパスワードを聞いてきますので入力するとそのフォルダーが開き、mdbファイルをダブルクリックするとファイルが開きます。しかし、他のクライアントPCからはこの方法では開きません。クライアントPCで先にAccess2000を起動させえておき、そこからファイル→開く→マイネットワークと進みます。そしてパスワードを入力してログオン完了後、該当のmdbをクリックすると開きます。 なぜ、このようなことが起こるのかわかりません。後者の方法だとショートカットも張れないし不便を感じています。すべてのクライアントPCから前者の方法でmdbファイルを開きたいのですが何か設定が必要なのでしょうか。 各クライアントPCからサーバーへはPingが通りますのでネットワーク的にも問題はないように思えるのですが、アドバイスお願いできますでしょうか?

  • MS Accessが時間と共に重くなる

    MS Accessでシステムを構築したのですが、同じ画面を使い続けるとパフォーマンスが悪くなります。 <システムの構成> ファイルサーバにテーブルを持つmdbファイル(サーバmdb)を置き、 各PCに置かれた、フォーム、レポート、クエリ、VBAを持つmdb(クライアントmdb)から接続します。 各PCのクライアントmdbのフォームを何時間か使い続けていると、サーバからデータを取得するのが遅くなります。 (調べてみると並び替え(order by)が主な原因のようです。参考までに遅くなった時のデータ取得件数は2万件程でした。) ただし遅くなっても、1度フォームを閉じて開き直すと、同じデータでも再び速くなります。 どうすれば速くなるかは別途考えなければいけませんが、そもそも何が原因なのでしょうか。 ・朝(使い始め)は速い ・同じフォームをずっと使い続けるとデータ取得が遅くなる ・フォームを閉じて開き直すと再び速くなる メモリが関係してそうな気がしますが、MS Accessではこういうことは起こるもの(仕様)なのでしょうか。原因が知りたいのですが、何か情報はないでしょうか。

  • Accessでの理想の運用形態

    はじめまして、Accessで業務用アプリケーションを作成しています 独学なので、何が正しいというものを分からず、 主にインターネットの情報を元に作成しています そこで、まずテーブルとそれ以外(クエリ、フォーム、レポートなど)を分割し、テーブルだけのmdbはファイルサーバー上に置いています 利用者のパソコンのデスクトップに、それ以外のmdbを置いています 接続はテーブルのリンクのみです ですので、利用者のmdbを開くと同時に、ファイルサーバー上の mdbも開き、ldb(ロックファイル)も生成されます これをファイルサーバー上のmdbを開かずに、テーブルのデータを 取得することは可能でしょうか DAOとかADOでVBAを使わなければならないのでしょうか アドバイスよろしくお願いします ちなみに、SQLServer2005ExpressEdtionをどこかのパソコンに インストールし、データベース環境を一新しようと思ったのですが どうすればいいのかがイマイチ分かっていません ヒントでもいいので、教えていただけないでしょうか