
以前も質問したことがあるのですが、再度質問させていただきます。
Accessのロックについてです。
Windows2003Sever + Microsoft SQL ServerのマシンにあるMDBファイルを置いてあります。
これに社内LANでつながっているwindowsXP+access2000マシン10数台が
それぞれWindows2003サーバマシンのmdbファイルのテーブルにリンクしているmdbファイル持っていて日々データの閲覧と更新をしています。
その際時々Access2000が以下のような以下のようなWindowメッセージを出します。
「現在ロックされているので、更新できませんでした。」
この件で困っております。
いくつか、わかっていることがあります。
◎Windows2003Serverのこのmdbにアクセスしている人が多い時にこのメッセージが出るわけではない。使用者が2人でも出るときがある。
◎同じフィールドへの同時書き込みの場合は他のユーザによって変更されています。。。のようなメッセージが出るので同時書き込みの問題ではなさそうだ。
◎ロックがかかった場合、接続ユーザーみんなが開いているmdbを閉じて再度開くとロックは解除されている。
ここで質問なのですが、
・ロックはなぜかかるのでしょうか?
・ロックの回避方法はありますか?
以上、どうかよろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
なるほど、少々ややこしいことになっているようですね。
>正確に言うと「現在ロックされているので、更新できませんでした。」
>という表示を出してロックがかかることはありませんでした
ここの表現が曖昧なのですが、更新ができてしまっているということですか?
更新ができていなければ、それはロックがかかっているので正常です。
ロックがかからないということは更新できてしまい、
トランザクションの処理がザルということで、これはこれで問題なのですが・・・
>接続ユーザーみんなが開いているmdbを閉じて再度開くとロックは解除されている
これはデッドロックが発生しているかもしれませんね。
ロックのかけ方が悪い可能性もあります。
詳細はソフトを作っているところに連絡してテストしてもらって下さい。
この回答への補足
お返事ありがとうございます。
>ここの表現が曖昧なのですが、更新ができてしまっているということですか?
>更新ができていなければ、それはロックがかかっているので正常です。
更新は出来ていません。
>これはデッドロックが発生しているかもしれませんね。
>ロックのかけ方が悪い可能性もあります。
>詳細はソフトを作っているところに連絡してテストしてもらって下さい。
そもそもプログラムでロックをかけるようなことはしていませんので困っております。なぜ時々ロックがかかるのかがわかっておりません。
接続ユーザーたちが同じフィールドを修正すれば「他のユーザーの更新を反映しますか?」というような表示が出るので同時書き込みでロックがかかっているわけではありません。
No.1
- 回答日時:
運用者ですか。
それとも開発者ですか?以下の回答は運用側に絞ったものになります。
ロックはアクセスが開いている間にかかるものではなく
トランザクションの開始から終了までかかるものです。
トランザクションの開始と終了は開発側でコードします。
ロックを回避するのは設計側からみれば非常に危険に映ります。
更新者が更新した積もりなのに別な人が直後に更新していたら
重大な不手際が生ずる恐れがあるからです。
この回答への補足
お返事ありがとうございます。
開発に関わった運用者です。
元々Serverに置いてあるmdbはwindowsXP proマシンに置いていましたが、利用者が多くなったため、他の人にWindows2003serverの環境を構築してもらい、現在の形になっております。
以前の環境ではロックがかかることはありませんでした。
正確に言うと「現在ロックされているので、更新できませんでした。」という表示を出してロックがかかることはありませんでした。
元のmdb自体は特別なAccessVBAが動いているわけではありません。
ただテーブルがあるだけです。
接続している側も、開いたときに自分のデータが開く、
顧客の姓を入力したときに同様のデータがあるかどうか探しに行くというAccessVBAプログラムが動いているのみで特別はことはしておりません。この検索部分はServerに移動する前から動いていたものです。
Serverに移動してからこのような現象が起きるようになりましたので、ロックがかかるのはなぜかその理由を調べたいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ACCESS 複数のフォームから同一テーブル参照
Access(アクセス)
-
MSAccess ロック状態かどうかを確認したい
その他(Microsoft Office)
-
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
-
4
ODBCエラー「admin」によってロックされている...
その他(データベース)
-
5
レコードロック情報の解除方法を教えてください。
Access(アクセス)
-
6
「○○○.ldb」のAccess レコード ロック情報←このファイルが消えません
その他(データベース)
-
7
「データベースまたはオブジェクトは読み取り専用なので、更新できません」エラーについて
その他(データベース)
-
8
ACCESSでテーブルをコピーしようとすると3211のエラーが出てしまう
Access(アクセス)
-
9
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
10
accessでイベントを中止するようなコマンドはあるのでしょうか?
その他(データベース)
-
11
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
12
Access2007でSQLの複数列副問い合わせについて
その他(データベース)
-
13
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
14
ACCESS クエリで1から順番に番号を表示したい
Access(アクセス)
-
15
NULLを含むフィールド値の条件分岐
Visual Basic(VBA)
-
16
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
-
17
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
18
Accessのmdbを開こうとしたときのエラー
Access(アクセス)
-
19
Access200 ADO adLockPessimisticとadLockOptimisticの違い
Access(アクセス)
-
20
ACCESSのVBAにてExcelのシートをコピーしたい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT時の行ロックの必要性に...
-
Oracleの排他制御について教え...
-
SELECT文でのデッドロックに対...
-
AccessShareLock はどの程度気...
-
SQLServer Insertが遅い
-
ロックについて
-
SELECT FOR UPDATE にトランザ...
-
accessのロック
-
Accessにインポートしたら並び...
-
「マスタ」と「テーブル」の違...
-
ACCESS2007 フォーム 「バリア...
-
3つ以上のテーブルをUNIONする...
-
Access VBA [リモートサーバー...
-
同じ構成のテーブルを結合する
-
オラクルではできるのにSQLSERV...
-
ACCESS VBA コマンドDoCmd.Open...
-
DataTableから条件を満たした行...
-
クエリのキャンセルがいつにな...
-
accessのエクスポートエラーに...
-
SELECT時にカウントアップ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT文でのデッドロックに対...
-
SQLServer Insertが遅い
-
SELECT時の行ロックの必要性に...
-
accessのロック
-
AccessShareLock はどの程度気...
-
Oracleの排他制御について教え...
-
更新ロックとデッドロック
-
INSERTにおいてロック処理は必要か
-
DB2のロック調査
-
排他ロックしたレコードが、別...
-
トランザクションとlast_insert_id
-
SELECT文でタイムアウト...
-
トランザクション中にSELECTし...
-
デッドロックが発生します。
-
ExcelからAccess2013DBを更新す...
-
UPDATE文で発生するデッドロッ...
-
トランザクション処理について
-
DB2でSelectした時(rollback,c...
-
パススルークエリでのロックに...
-
SELECT FOR UPDATE にトランザ...
おすすめ情報