🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.visualbasic
Article #947

Selectによるdeadlockの解決方法を教えて下さい

#947
From: H.Shima
Date: Thu, 18 Dec 1997 00:00
80 lines
2922 bytes
始めて、投稿させて頂きます。

現在、SQL Server + VB4によるシステムを構築中なのですが、
誰か分かる方教えて下さい。

OpenResultsetメソッドを使用してSELECTクエリーを発行しているのですが、
結果が返ってくる迄、SELECTで使用しているテーブルに対して、
他のプロセスから更新を行うと、SELECT側がブロックしてしまって、
SELECTが完了するまで更新できません。
(複雑なSELECT文で実行時間が掛かると、deadlockがしばしば発生する)
PG中はロックしないようにReadOnlyに設定しているのですが・・・・
なにか間違えているのでしょうか教えて下さい。

現在の環境は下記の通りです。

	サーバ環境
		EXPRESS 5800/160Pro
		OS: Windows NT Server 4.0 SP2
		DBMS: MS SQL Server 6.5 SP2

	クライアント環境
		RsⅡ266
		OS: Windows 95 OSR2

	開発環境
		言語:Microsoft Visual Basic 4.0 Update2
		DBとの接続は、RDOによる信頼関係を使用しています。

*ブロックするPGのロジック
-------------------------------
Public gloDbConnect As rdoConnection
Private Sub XXXXXX()

	Dim SQL As String
	Dim objResultset As rdoResultset

	Set gloDbConnect = rdoEngine.rdoEnvironments(0).OpenConnection( _
			dsname:="IKKSQLSOURCE", _
			Prompt:=rdDriveNoPrompt, _
			ReadOnly:=False, _
			Connect:="DSN=IKKSQLSOURCE;")

	gloDbConnect.QueryTimeout = 0

	SQL = "SELECT * FROM Tablename WHERE ~"
	Set objResultset = gloDbConnect.OpenResultset( _
			Name:=SQL, _
			Type:=rdOpenForwardOnly, _
			LockType:=rdConcurReadOnly)
	%%%%%%%%%
End Sub
----------------------------

*ブロックされるPGのロジック
----------------------------
Public gloDbConnect As rdoConnection
Private Sub XXXXXX()

	Set gloDbConnect = rdoEngine.rdoEnvironments(0).OpenConnection( _
			dsname:="IKKSQLSOURCE", _
			Prompt:=rdDriveNoPrompt, _
			ReadOnly:=False, _
			Connect:="DSN=IKKSQLSOURCE;")

	gloDbConnect.QueryTimeout = 0

	gloDbConnect.Execute "INSERT TableName VALUES(1,2,3,4)"
	%%%%%%%%%
End Sub
----------------------------

ちなみに
ブロックする側が発行するSELECT文を取り出してISQL/Wから実行し、
ブロックされる側のPGを動かした場合、全く問題なく動作します。

************************
(株)ホクタテ 島
E-Mail: shima@tko.fitweb.or.jp
************************
Technical Details
Message-ID: <01bd0ba7$a8762180$a8ddb4cb@hkt-wn021>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 105c2e,d130f2e960ffeb74,start
X-Google-Attributes: gid105c2e,public
From: "H.Shima" <shima@tko.fitweb.or.jp>
Subject: Selectによるdeadlockの解決方法を教えて下さい
Date: 1997/12/18
Message-ID: <01bd0ba7$a8762180$a8ddb4cb@hkt-wn021>
X-Deja-AN: 299309984
Content-Transfer-Encoding: 8bit
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Organization: FITWeb
Newsgroups: fj.lang.visualbasic