Access (VBA)

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

 
(Windows 10 Pro : Access 2016)
パススルークエリを実行中は排他ロックがかかってしまう?
投稿日時: 21/09/24 10:26:24
投稿者: かず

パススルークエリを実行中は排他ロックがかかってしまう?
 
Windows Server2016
SQL Server 2016(バージョン1607)
ACCESSは2019を使用しています。
 
やりたい事は、
SQL Serverの1つのテーブルのデータを参照したいのです。
このテーブルは他システムで入力中の実績は反映されなくてもよいので、
パススルークエリを実行した時の情報が参照できればよいのです。
 
やった事は、
アクセスからパススルークエリで
SQL Serverのテーブルにデータアクセスしてデータの参照をしています。
パススルークエリはSELECT文だけです。
 
このパススルークエリを実行したときに
他のシステム(vb.net)から
パススルークエリで参照中のテーブルに書き込みをしようとした時に
書き込みが出来なかったのです。
 
アクセスからパススルークエリを実行している時は
SQL Serverのテーブルには排他ロックかかってしまうのでしょうか?
 
いくら調べてもクエリの使用方法ばかりで排他制御については見当たりませんでした。
わかる方いらっしゃいましたらご教示頂けないでしょうか。

回答
投稿日時: 21/09/24 14:30:35
投稿者: よろずや

かず さんの引用:

アクセスからパススルークエリを実行している時は
SQL Serverのテーブルには排他ロックかかってしまうのでしょうか?
はい。
排他ロックがかかります。
 
かず さんの引用:
いくら調べてもクエリの使用方法ばかりで排他制御については見当たりませんでした。
パススルークエリは、直接 SQL Server に対してSQLを投げているのですから
アクセスのドキュメントには書いてありません。
SQL Server のマニュアルを見ましょう。
 
with(nolock)

投稿日時: 21/09/24 15:40:40
投稿者: かず

よろずやさんありがとうございます。
やはり排他ロックがかかっていたんですね。
まったくの参照だけなので共有ロックすらかけたくないのです。
SQL Serverのマニュアルを調べてみます。

投稿日時: 21/09/24 15:59:04
投稿者: かず

既にヒントと言うより答えを書いて頂いていたのですね
with(nolock)
 
文法は↓で行けそうですね!
select * from テーブル名 with(nolock) where 条件;
 
早速と思いきや、さすがに今日はやめてくれと言われてしまい
誰もいない、今度の日曜日に確認作業をする事になりました。
 

投稿日時: 21/09/28 19:03:41
投稿者: かず

よろずやさんありがとうございました。
日曜日にテストをしてみて大丈夫そうだったので
月曜日から火曜日まで業務運用中に様子を見ていたのですが
大丈夫そうです。
ありがとうございました!