• ベストアンサー

SQL排他問題

SQLについて質問です。 上司からデータベースとのデータのやり取りで誰かが操作中は他から参照・変更できないようにパススルークエリを使えといわれました。 パススルークエリとはどのようにして使用するのでしょうか? この場合トランザクションを使用するのが適切ではないんですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

トランザクションを使用するのが適切です。 上司の方は微妙にパススルークエリの意味を取り違えているのかもしれません。Accessにはトランザクションがありませんのでトランザクションの開始とコミットの命令はパススルークエリで送信しますからそのあたりで勘違いされている可能性があります。 以下、参考URLより引用 パススルークエリ [pass-through query] Accessに用意されているSQLクエリのひとつ。入力したSQL文をAccessに解釈させず、直接データベースサーバーに送信することができる。

参考URL:
http://www.x-media.co.jp/jiten/index.cfm?ID=6633

その他の回答 (2)

回答No.3

「操作中」っていうのが微妙に心配・・・ 編集用の画面を開いてから閉じるまでずっと参照も禁止するとか・・・

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>パススルークエリとはどのようにして使用するのでしょうか? SQLServer+Accessの構成なのでしょうか。 AccessからSQLServerのサーバー構成のリンクによってリモートデータソースに対しクエリを直接実行する形になります。 パススルークエリはODBCドライバ経由で直接データベースへクエリを発行します。全てSQL文でクエリを書く必要があります。SQLはSQLServer準拠のSQLを書かなければいけません。 >操作中は他から参照・変更できないように Transaction開始時のIsolationLevelをRepeatableReadに設定しSQLで string strSQL = "SET LOCK_TIMEOUT 1000 SELECT * FROM table_name WITH(XLOCK) "; みたいに排他ロックして取得すれば良いと思いますが。

関連するQ&A