2012-12-19 62 views
0

執行插入查詢時,我得到了無盡的無限循環(我認爲是這樣)。它永遠不會結束。 下面是我的查詢在SQL查詢中的無限循環

ALTER proc [dbo].[InsertNomineeImage] 
@UserId int, 
@ContestId int, 
@ImagePath varchar(150), 
@Name varchar(50), 
@Description varchar(500) 

As 
BEGIN 
    Begin TRY 
     BEGIN TRAN 

     Declare @Id as int 

     insert into UserImages(UserId,ImagePath,Name,Description,IsActive) 
     values(@UserId,@ImagePath,@Name,@Description,'False') 

     set @Id=SCOPE_IDENTITY(); 


     Insert into UserContestImages(UserId,ContestId,UserImage,ParticipationDate,IsActive) 
     values (@UserId,@ContestId,@Id,GETDATE(),'False') 

     COMMIT TRAN 

    END TRY 
    BEGIN CATCH 
     IF @@ERROR > 0 
      ROLLBACK TRAN 

    END CATCH 


End 
+0

循環在哪裏?我看到的只是兩個簡單的插入語句。 – dan1111

+0

實際發生了什麼?你執行這個SP,它永遠不會返回? –

+2

@ dan1111'SCOPE_IDENTITY'是一個系統函數 –

回答

1

賠率很高,這是一個阻塞的問題,而不是一個循環。

運行時,打開SSMS並運行SP_WHO2 ACTIVE。它會告訴你所有正在做某事的spids - 你的將會在那裏。有一列'BlkBy' - 如果該列中有一個數字,則查詢被阻止(等待另一個進程完成並釋放其鎖),這是阻止查詢的會話數。調查會議正在做什麼,你會得到你的答案。