sql查询中的无限循环

时间:2012-12-19 11:25:47

标签: sql sql-server sql-server-2008 tsql

执行插入查询时,我得到了无限的无限循环(我想是这样)。它永远不会结束。 以下是我的查询

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

1 个答案:

答案 0 :(得分:0)

这是一个很大的障碍,这是一个阻塞问题,而不是循环。

在运行时,打开SSMS并运行SP_WHO2 ACTIVE。它会告诉你正在做某事的所有spid - 你的将在那里。有一个列'BlkBy' - 如果该列中有一个数字,则查询被阻止(等待另一个进程完成并释放其锁定),这就是阻止查询的会话数。调查那个会话正在做什么,你会得到答案。