Hi,I am running Store Procedure in sql server 2005 but sometimes i see deadlock error.Could you please advice me what could be the problem and where i need to identifiy?I am doing insert/update inside the procedure.This is written by third party.Please see the Store Procedure SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE procedure [dbo].[TrkOrd](@CallType INT = 1,@App VARCHAR(50) ,@OrdNum INT = 0 ,@OrdDt DATETIME = NULL,@OrigReq XML = '',@OrdReq XML = '',@Response XML = '',@SubmitFlag BIT = 0,@Exceptions VARCHAR(MAX) = '')ASBEGIN ---BEGIN TRAN T1 DECLARE @Ver AS SMALLINT IF @CallType = 1 BEGIN SELECT TOP 1 @Ver = ISNULL(Ver,0) + 1 FROM OrdProcStatus WHERE App = @App AND OrdNum = @OrdNum ORDER BY Ver DESC IF @Ver is NULL Set @Ver = 0 Insert INTO OrdProcStatus(App,OrdNum,OrdDt,OrigReqMsg,Ver) VALUES(@App,@OrdNum,@OrdDt,@OrigReq,@Ver) --IF @@ERROR <> 0 GOTO X END ELSE IF @CallType = 2 BEGIN SELECT TOP 1 @Ver = Ver FROM OrdProcStatus WHERE App = @App AND OrdNum = @OrdNum ORDER BY Ver DESC UPDATE OrdProcStatus SET OrdReqMessage = @OrdReq WHERE App = @App AND OrdNum = @OrdNum AND Ver = @Ver --IF @@ERROR <> 0 GOTO X END ELSE IF @CallType = 3 BEGIN SELECT TOP 1 @Ver = Ver FROM OrdProcStatus WHERE App = @App AND OrdNum = @OrdNum ORDER BY Ver DESC UPDATE OrdProcStatus SET ResponseMessage = @Response ,SubmitFlag = @SubmitFlag WHERE App = @App AND OrdNum = @OrdNum AND Ver = @Ver --IF @@ERROR <> 0 GOTO X END ELSE IF @CallType = 4 BEGIN SELECT TOP 1 @Ver = Ver FROM OrdProcStatus WHERE App = @App AND OrdNum = @OrdNum ORDER BY Ver DESC UPDATE OrdProcStatus SET Exceptions = @Exceptions WHERE App = @App AND OrdNum = @OrdNum AND Ver = @Ver --IF @@ERROR <> 0 GOTO X END--COMMIT TRAN T1SELECT 1 AS Success FOR XML RAW--, XMLDATA--RETURN--X:--ROLLBACK TRAN T1--SELECT 0 AS Success FOR XML RAW--, XMLDATA END
Thanks for your help!