Date: Wed, 28 Feb 2001 19:25:11 +0900
From: "Yoko T" <who@example.co.jp>
田中です。
いつもお世話になっております。
SQL Server 7.0 + VB6.0で開発しています。
ロックのテストをしたところ、行ロックがうまくかかりませんでした。
SQL Server 7.0 のロックについて、ご指導ください。
--------↓ テストした内容です ↓ ---------------------------
テスト環境 : 明示的なトランザクションモードで更新をしている端末Aと
自動コミットトランザクションモードで追加をしている端末B
の2台のマシンで、同じテーブルの違うレコードをアクセスす
る
テストフロー: 1. 端末A側で、次の処理をする。 ( クエリアナライザ )
begin transaction
update t_tanto set MEI='b' where TANCD=4
-- commit transaction コメントにしておく
2. 端末B側で、次の処理をする。 ( VB )
Insert into t_tanto(TANCOD,MEI)
values(10,'a')
3. 端末B側、タイムアウト発生
VBのエラーコード -2147217871 が発生
4. 端末A側で、次の処理をする。 ( クエリアナライザ
)
commit transaction を実行
5. updateの確定、 Insert の確定
※ また、データ更新トランザクションが開始された場合、
VB側で、読み取ることもできませんでした。
--------↑ テストした内容です ↑---------------------------
質問1. 行ロックがかかるのであれば、端末A側と端末B側は、
違うレコードなので、タイムアウトが起こらないと思うのですが、
間違いでしょうか?
質問2. 堀川先生の黄色い本(正式名でなくすみません)の .上巻 P454に
・・
「トランザクション操作内で使われるテーブル などがロックされる」 と
は、
トランザクションが開始された場合は、行ではなく、テーブルが
ロックされてしまうということなのでしょうか。
質問3. VB側で追加(更新/削除)をしようとして、タイムアウトになった場合、
トランザクションが確定された後、必ず、更新されているものなの
でしょうか?
以上 長文で申し訳ありませんが、よろしくお願いいたします。
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
田中 洋子
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|