- PR -

SQLSV2000のトランザクションに詳しい方・・・

1
投稿者投稿内容
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2006-12-20 10:43
 お世話になっております。
次のケースで、SQLサーバーへの接続がタイムアウトになります。

1.構成
 [SQLSV2000]
  |
  +PC1(Win2000Pro)
  +PC2(Win2000Pro)


2.(PC1で)Excel2000からMSQueryを立ち上げてSQLSVの[Table1]の全てのフィールドを
  全てSELECT

3.(PC1で)一旦保存(Excel上でクエリの更新ボタンを押すとシートの内容が更新される)

4.(PC1で)もう一度そのクエリに対してMSQueryの編集フォーム(Accessのクエリのデザインビューのようなもの)を開いた状態で・・・

5.(PC2で)AccessからADOでSQLSV2000の[Table1]をSELECT文でレコードセットを取得しようとするとトランザクションロックがかかったような状態で待ちに入る(そのうち接続タイムアウト)

6.(PC2で)タイムアウトになる前の待ち状態で、PC1側でMSQueryの編集フォームを閉じるとPC2での待ち状態が一気に解放され、正常にSELECTされる(Access側でデータが取得できる)


そしてこの現象は、全てのテーブルについて起こるものではなく、
SQLSV2000の[Table1]
についてのみ発生しました。

さらに[Table1]のデータを4万件から300件に減らすと現象が出なくなりました。しかし、300件以上あるテーブルは他にもありますが、特に現象は起きておりません。

SQLサーバーで何が起きているのでしょうか、
また何が起きているのかをどのような方法で調べることができるでしょうか。
何卒ご教授賜りたいと思います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-12-20 11:30
引用:

McLarenさんの書き込み (2006-12-20 10:43) より:

さらに[Table1]のデータを4万件から300件に減らすと現象が出なくなりました。しかし、300件以上あるテーブルは他にもありますが、特に現象は起きておりません。


それは、ロックされる時間が、件数にある程度依存するからでしょう。

# 4 万件から 300 件にレコードを減らし、現象が起きなくなったからといって、
# '300 件以上' を、その閾値にする根拠はないと思いますが...


引用:

SQLサーバーで何が起きているのでしょうか、


単にロックされているのだと思いますが...

# あ、"SQLSV2000 のトランザクションに詳しい方・・・" をご希望だったのですね。
# 私は全然詳しくありません、申し訳ありません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2006-12-20 11:40
じゃんぬねっと様 ありがとうございました。

MSQueryで編集画面を開いたときに、何故[Table1]の場合だけがロック状態になったのかを、引き続き待ってみようと思います。

1

スキルアップ/キャリアアップ(JOB@IT)