造成lock request time out period exceeded的原因,謝謝。 |
答題得分者是:show8514012
|
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
請問一下各位,我是使用mssql2000當db,然後我的軟體會使用下面的預儲程序(簡稱sp),請問我的軟體一次可能會有多個(目前最多為八個),在執行時都會執行到這個sp,並且在每一個軟體中都會做select的動作(我是有加上nolock,這個關鍵字),但是執行一段時間後就會出現 「lock request time out period exceeded」的訊息,但是我測試過完成一個sp的時間最多不超過五秒,而我設定了timeout為30000,所以應該不可能會沒處理完,請問一下,我下面這個sp還有什麼地方可能會造成錯誤嗎?我有找過google,有看到有人提議用「set transaction isolation level read uncommitted」,請問加這一行會有幫助嗎?謝謝,請各位幫忙一下,或是指導一下小弟有關這方面的問題,謝謝你花時間閱讀,謝謝。
[code sql] CREATE procedure dbo.execBulkInsert ( @path varchar(30),@KIND VARCHAR(10),@PARAM1 VARCHAR(128), @BoardSN varchar(30),@fdate varchar(20), @up varchar(2), @VINT INT OUTPUT) AS BEGIN DECLARE @vTestCount int, @Var1 VARCHAR(30) SET LOCK_TIMEOUT 30000 SET XACT_ABORT ON IF @KIND='Insert' BEGIN SET XACT_ABORT ON BEGIN TRAN exec ('bulk insert board' @path ' from ''' @PARAM1 @path 'board.txt'' WITH (BATCHSIZE = 1000, FIELDTERMINATOR = '','', TABLOCK , MAXERRORS=0 )') exec ('bulk insert component' @path ' from ''' @PARAM1 @path 'component.txt'' WITH ( BATCHSIZE = 1000, FIELDTERMINATOR = '','', TABLOCK , MAXERRORS=0 )') exec ('bulk insert boardSFC from ''' @PARAM1 @path 'boardSFC.txt'' WITH (BATCHSIZE = 1000, FIELDTERMINATOR = '','', TABLOCK , MAXERRORS=0 )') exec ('bulk insert componentSFC from ''' @PARAM1 @path 'componentSFC.txt'' WITH ( BATCHSIZE = 1000, FIELDTERMINATOR = '','', TABLOCK , MAXERRORS=0 )') exec ('bulk insert OpenShort from ''' @PARAM1 @path 'Pin.txt'' WITH (BATCHSIZE = 1000, FIELDTERMINATOR = '','', TABLOCK , MAXERRORS=0 )') COMMIT TRAN RETURN END END GO [/code]
------
DELPHI初學者 |
show8514012
一般會員 發表:0 回覆:2 積分:5 註冊:2002-12-19 發送簡訊給我 |
|
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
嗯,非常謝謝你的回覆,我目前的問題應該是為何會lock住,我在想說會不會是因為我的client會同時連接到db然後同時call這個sp所以會造成這種現象,還是說有什麼方式可以查明是什麼原因導致的方法,之前有人提到說用profile的功能查詢每一句sql語法,所以我都有針對sql語法去做檢查,盡量用快速的方式得到結果,但不知為什麼還是會有lock,而且我的sp是只做bulkinsert的動作,而且只要是ok的流程,都不會超過一秒,並且我也有set time_out這個屬性,還是會lock,這就真的很怪了。
===================引 用 show8514012 文 章=================== Dear.. 我在書上查到這部份的資料 設定Database 的 屬性 TransIsolation 為 tiDirtyRead 是可改善被其他異動作業使用時. 無法讀出資料的問題 但. 若你的問題是在於lock 過久. 那設這個只是解了它造成其他作業無法讀取的問題.
------
DELPHI初學者 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |