• 締切済み
  • すぐに回答を!

accessのロック

以前も質問したことがあるのですが、再度質問させていただきます。 Accessのロックについてです。 Windows2003Sever + Microsoft SQL ServerのマシンにあるMDBファイルを置いてあります。 これに社内LANでつながっているwindowsXP+access2000マシン10数台が それぞれWindows2003サーバマシンのmdbファイルのテーブルにリンクしているmdbファイル持っていて日々データの閲覧と更新をしています。 その際時々Access2000が以下のような以下のようなWindowメッセージを出します。 「現在ロックされているので、更新できませんでした。」 この件で困っております。 いくつか、わかっていることがあります。 ◎Windows2003Serverのこのmdbにアクセスしている人が多い時にこのメッセージが出るわけではない。使用者が2人でも出るときがある。 ◎同じフィールドへの同時書き込みの場合は他のユーザによって変更されています。。。のようなメッセージが出るので同時書き込みの問題ではなさそうだ。 ◎ロックがかかった場合、接続ユーザーみんなが開いているmdbを閉じて再度開くとロックは解除されている。 ここで質問なのですが、 ・ロックはなぜかかるのでしょうか? ・ロックの回避方法はありますか? 以上、どうかよろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数4806
  • ありがとう数3

みんなの回答

  • 回答No.2
  • gungnir7
  • ベストアンサー率43% (1109/2548)

なるほど、少々ややこしいことになっているようですね。 >正確に言うと「現在ロックされているので、更新できませんでした。」 >という表示を出してロックがかかることはありませんでした ここの表現が曖昧なのですが、更新ができてしまっているということですか? 更新ができていなければ、それはロックがかかっているので正常です。 ロックがかからないということは更新できてしまい、 トランザクションの処理がザルということで、これはこれで問題なのですが・・・ >接続ユーザーみんなが開いているmdbを閉じて再度開くとロックは解除されている これはデッドロックが発生しているかもしれませんね。 ロックのかけ方が悪い可能性もあります。 詳細はソフトを作っているところに連絡してテストしてもらって下さい。

共感・感謝の気持ちを伝えよう!

質問者からの補足

お返事ありがとうございます。 >ここの表現が曖昧なのですが、更新ができてしまっているということですか? >更新ができていなければ、それはロックがかかっているので正常です。 更新は出来ていません。 >これはデッドロックが発生しているかもしれませんね。 >ロックのかけ方が悪い可能性もあります。 >詳細はソフトを作っているところに連絡してテストしてもらって下さい。 そもそもプログラムでロックをかけるようなことはしていませんので困っております。なぜ時々ロックがかかるのかがわかっておりません。 接続ユーザーたちが同じフィールドを修正すれば「他のユーザーの更新を反映しますか?」というような表示が出るので同時書き込みでロックがかかっているわけではありません。

関連するQ&A

  • Accessで二重起動できないようにしたい

    いつもお世話になってます。 Win2000、Access2000でmdbファイルを作成しました。 上記環境の他にもWinXP、Access2000という環境のパソコンでも使用します。 ネットワーク上でmdbファイルを共有しています。 あるパソコンがファイルを開いている時、別のパソコンでは開かないように設定できますか? 例えば、既に開いています。みたいなメッセージが出せるとなお良いのですが。 よろしくお願いします。

  • Accessにて「書き込みに遅延がしました」について

    Access2000にて、更新クエリーを実行すると「書き込みに遅延がしました」が表示される。 googleにて検索しても、該当が見つかりません 環境は、Windows2000(sp4)+Access2000(sp3)にて、ファイルサーバー上のmdbを使用している時に発生します。

  • ACCESS97で開きたい

    ACCESS97とACCESS2000をインストールしているのですが、 MDBの拡張子のファイルを開くとACCESS2000で開いてしまいます。 ACCESS97で開くようにする方法ってありますか? 関連付けでACCESS97のEXEを指定してもダメでした。 よろしくお願いします。

  • 回答No.1
  • gungnir7
  • ベストアンサー率43% (1109/2548)

運用者ですか。それとも開発者ですか? 以下の回答は運用側に絞ったものになります。 ロックはアクセスが開いている間にかかるものではなく トランザクションの開始から終了までかかるものです。 トランザクションの開始と終了は開発側でコードします。 ロックを回避するのは設計側からみれば非常に危険に映ります。 更新者が更新した積もりなのに別な人が直後に更新していたら 重大な不手際が生ずる恐れがあるからです。

共感・感謝の気持ちを伝えよう!

質問者からの補足

お返事ありがとうございます。 開発に関わった運用者です。 元々Serverに置いてあるmdbはwindowsXP proマシンに置いていましたが、利用者が多くなったため、他の人にWindows2003serverの環境を構築してもらい、現在の形になっております。 以前の環境ではロックがかかることはありませんでした。 正確に言うと「現在ロックされているので、更新できませんでした。」という表示を出してロックがかかることはありませんでした。 元のmdb自体は特別なAccessVBAが動いているわけではありません。 ただテーブルがあるだけです。 接続している側も、開いたときに自分のデータが開く、 顧客の姓を入力したときに同様のデータがあるかどうか探しに行くというAccessVBAプログラムが動いているのみで特別はことはしておりません。この検索部分はServerに移動する前から動いていたものです。 Serverに移動してからこのような現象が起きるようになりましたので、ロックがかかるのはなぜかその理由を調べたいのです。

関連するQ&A

  • Access2000で作ったmdbをAccess2003で使える?

    タイトル通りですが、 Access97で作ったmdbファイルをAccess2000に 「データベース変換」し使ってきたファイルを Access2003でも使えるでしょうか? また、Access2000で作ったファイルは何の問題もなくAccess2003で使えるでしょうか? 単純なmdbではなくイベントプロシージャーを多用して、ある程度まとまったプログラムになってます。

  • Accessのmdeファイルについて

    お世話になります。 Access2000で作成しています。 Access2000で作成したmdbファイルから、mdeを作成。 access2000のRuntimeが入っているパソコンで開いたところ、 フォームが表示されず、何も実行できないウィンドウが 開くような状態なのです。 mdbからの書き出し時に、どのように設定すれば、mdeのフォームなどが 開いた状態になるのでしょうか? お手数ですが宜しくお願いします。

  • ACCESSのテーブルロックについて

    テーブルのロックについて教えて下さい。 ACCESS2000にてテーブル作成クエリを作成し、その作成したテーブルをフォームで参照しています。 そのフォームを開いたままで、再度、同じテーブル作成クエリを実行すると、 「テーブル○○は現在ほかのユーザまたはプロセスで使用されているので、ロックできませんでした。」 というメッセージが表示され、クエリを完了することができません・・・ これを回避する(クエリを優先する)方法、設定があったら教えて下さい。 宜しくお願いします。

  • Access 壊れた?

    お願いします。 Access2000です。 あるMDBを開くと「'MSysAccessObjects'の読み取り権限がないので、レコードを読み取ることができません。」のメッセージが表示されます。「Shift」+「Enter」で開こうとしてもダメでした。今日の午前中まで使用できていたので突然のエラーに困っています。気になるのは同じフォルダ内に「db1.mdb」~「db18.mdb」があったことです。 しかし、それらのファイルは削除してしまいました。 (ゴミ箱を空にしてしまいました。) この現症と対処方法を教えてください。 とっても困っています!

  • ACCESS97からACCESS2000

    ACCESS97で作ったMDBをACCESS2000で修正できません。 「ツール」メニューの「データベースユーティリティー」をポイントして「変換」をクリックというメッセージが表示されますが、「変換」のところが非表示になっています。 どうしたらACCESS2000で修正できるのでしょうか?

  • Accessについて

    お世話になっております。 同僚が少々困っているようなので、代わりに質問させていただきます。 知っている人がいましたら、教えていただきたく。 以下、同僚の文章引用。 ***** Access97で作成したmdbをAccess2000で開くと、 データーベースの変換を行うか聞いてきますよね。 変換をかけてしまうと、Access97ではその後使用できなくなります。 ここまでは、経験したことがあるので確実なんですけれど、、、 ではAccess2000⇒Access2002、Access2000⇒Access2003 の場合はどうなんでしょうか? データベースの変換は走りますか? 変換を行ったとして、そうすると下位のバージョンでは使用できなくなりますか? 今まで、そういう話があったら教えていただきたく、お願い致します。 緊急ではないので、時間ができたら調べるつもりですが、すぐわかる方がいればお教え願います。 ***** 以上、宜しくお願いいたします。

  • Access2000で開けない

    Access2000でmdbファイルを開くと 何も起きなくなる事があります。 mdbファイルをダブルクリックしても ファイルから開くでも、何も反応しません。 Access2000自体は、立ち上がります。 もう、こうなるとバックアップから回復するしか ありません・・。(T_T) どなたか同じ現象に会われた方、回避方法を ご存知の方、いらっしゃいませんか?

  • バッチ処理でAcess処理終了後にメッセージがでるのはなぜですか?

    バッチファイルで、Access2000のマクロ「AutoExec」を起動させて処理をおこないたいのですが、 「AutoExec」の処理が終了し、Accessが終了すると、以下のメッセージボックスが表示されてしまいます。 メッセージボックスの内容 「'C\xxx.mdb'がみつかりません。名前を正しく入力したかどうかを確認してから、やり直してください。 ファイルを検索するには、「スタート」ボタンをクリックしてから、[検索]をクリックしてください。」 Access2000は、該当のディレクトリに、置いていますし、 ちゃんとAccess2000のマクロ「AutoExec」の処理は実行されています。 Access2000の処理は、正常に終了しているのに、こんなメッセージが表示されては、 意味がありません。 このAccess2000の「AutoExec」のバッチ処理は、何十個もあるバッチ処理の一部です。 バッチ処理の途中でメッセージが出るとその後自働で、行われる予定のバッチ処理が、 行われないので非常に困ってます。 どうしたらよいですか? とにかく、バッチ処理で、Access2000を起動させ、マクロ「AutoExec」を使用して処理を行いたいのです。 その間、どんなことがあっても、メッセージボックスの表示などで、処理を止めてはならないのです。 お願いします。誰か教えてください。 バッチファイル名(このバッチファイルの次に、Access2000とは、無関係のバッチファイルの処理がたくさんあります) xxx.bat バッチファイルの内容 CALL c:\yyy.mdb(又は、startc:\yyy.mdb)

  • AccessVBAの参照不可

    Access2000、WindowsXPです。 作成したmdbを他のAccess2000、WindowsXP環境のPCでデータ入力をしてそれをVBAでファイル出力しようとするとエラーになり、調べてみると参照設定のところで参照不可にチェックが入っています。 そのチェックを外すと動作します。 データを入れる前のmdbには参照不可のチェックは入っていなかったので環境が変わってデータを入力した跡にチェックが入ったようです。 これはなぜおこるのでしょうか? また対策はありますか? 以上、よろしくお願いいたします。

  • ACCESSフォームのボタン表示

    ACCESSフォームのボタン表示 ACCESS2000で作成したフォームのボタンはACCESS2007でも変わりません。 ACCESS2007で一から作成したMDBは、ボタンの表示スタイルが異なります。 ※ボタンの角が丸く、マウスカーソルをボタンの上に当てるだけで色が変わる。 ACCESS2000で作成したMDBをACCESS2007で上記のように表示させる設定は あるのでしょうか? いろいろ見ても、見当たらないのです。 よろしくお願いします。