0

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

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
4

1 回答 1

0

这是一个阻塞问题而不是循环的可能性很高。

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

于 2012-12-19T16:19:29.820 回答