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_WHO2ACTIVEを実行します。それはあなたに何かをしているすべてのspidを示します-あなたはそこにいるでしょう。列'BlkBy'があります-その列に番号がある場合、クエリはブロックされます(別のプロセスが完了してロックを解除するのを待機します)。これは、クエリをブロックしているセッションの番号です。そのセッションが何をしているのかを調査すれば、答えが得られます。

于 2012-12-19T16:19:29.820 に答える