Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : その他)
更新クエリでロックでの更新不可やAccessが強制終了する
投稿日時: 20/08/26 09:35:14
投稿者: みよん

初めて質問させていただきます。
【環境】
OS:Windows10
Access:Office365
Oracle :11g (32bit ODBCドライバ接続)
 
リンクしたOracleのテーブルに対して、更新クエリを使ってデータを更新しているのですが
今の環境になってから、Access自体が落ちたり、更新する行に一部ロックがかかって
更新できません。
 
一部ロックがかかるというのは、例えば3000行更新するとして、1度目の更新クエリ実行で
1000行ロックがかかったというエラーメッセージが出て、再度同じ更新クエリを実行すると
500行がロックがかかる。ある程度の行になると、Access自体が強制終了してしまう感じです。
 
古い環境(Windows7、Access2010、同じOracleテーブル)だと、同じクエリで問題なく更新できます。
 
Microsoftのサポートセンターにも問い合わせしてみたのですが、解決に至らず。
海外の方だったのでうまく伝わってないのかもしれませんが・・・。
 
 
同様の現象が解決された方いらっしゃいませんか。
または、何か解決のヒントになるようなことがありませんか。
 
※一度Office365の64bit版を入れたのですが、過去作成したVBAの機能が
うまく動かないこともあり現在は32bit版をインストールしています。
 
 
以上、よろしくお願いします。

回答
投稿日時: 20/08/26 09:46:51
投稿者: sk

引用:
OS:Windows10
Access:Office365
Oracle :11g (32bit ODBCドライバ接続)

引用:
古い環境(Windows7、Access2010、同じOracleテーブル)だと、
同じクエリで問題なく更新できます。

古い環境と新しい環境において、Oracle データベースへの
接続に使用されているドライバーの種類やバージョン
一致しているのでしょうか。

投稿日時: 20/08/26 09:59:05
投稿者: みよん

 
同じものを入れていたつもりでしたが、改めて確認したところ、
11.2.0.3.0と11.2.0.1.0の違いがありました。
入れ直ししてみます。
 
ありがとうございます。

回答
投稿日時: 20/08/26 10:16:17
投稿者: Suzu

1. ODBC接続には、DSN設定を行っていますよね?
  OSのが 64ビットの場合、コントロールパネルのODBCの設定画面を開いても
  64ビットの設定画面が開いてしまいます。
  それを理解したうえで、32ビットのドライバを使用している とのお話でしょうか?
  また、32ビット、64ビットに同名のDSN名があったりはしませんよね?
 
 
2. ロックの原因について、他の方がロックしていない事を確認した上で
  2度目の更新クエリの実行を行っているのでしょうか?
 
  自身がそのテーブルを開いている(直前に開いていた)事もありませんよね?

投稿日時: 20/08/26 15:47:59
投稿者: みよん

sk様 
ODBCのバージョンを合わせた上で試したところ、20000行程度はエラーなく更新できました。
ただ最初に発生したエラーが50000行の更新で20000行のロックが発生したため
完全にOKなのか不安なところなので、あらためて同じ行数でテストしてみたいと思います。
 
 
Suzu様 
返信ありがとうございます。
1. ODBC接続には、DSN設定を行っていますよね?
→はい。32bit版側で設定しています。
 登録しているのは32bitのみですが、64bit版の画面を開くと、プラットホーム32bitとして
 32bitに登録したものが表示されています。
 
 
2.ロックの原因について、他の方がロックしていない事を確認した上で
  2度目の更新クエリの実行を行っているのでしょうか?
→対象のデータに関しては、他の人が見ることができないため、ロックするとしたら自分なのですが
 影響しそうな別プログラムについては閉じていることは確認しています。
 確かに閉じてから割とすぐ実行しているので、直前に開いていたといえばそう言えるかもしれません。
 

投稿日時: 20/08/28 18:10:17
投稿者: みよん

本日50000行のデータでテストしたところ
問題なく更新できました。
ODBCを11.2.0.3.0へ変更ということで、原因はAccessではなかったようです。
すみません。
 
当面これで運用して様子を見たいと思います。
ありがとうございました。