zoukankan      html  css  js  c++  java
  • SQL Server 并发死锁解决案例备忘

    SET @sql = '
                    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
                    SET DEADLOCK_PRIORITY 10
                    BEGIN TRAN
                        DECLARE @QuestionList TABLE(ID BIGINT,StudentCode NVARCHAR(50))
                        
                        INSERT INTO @QuestionList(ID,StudentCode)
                        SELECT TOP '+CAST((@QuestionCount*@MinorQuestionCount) AS NVARCHAR(10))+' SS.ID,SS.StudentCode  
                        FROM ['+@CourseID+'_SubjectiveScoreInfo] AS SS WITH(UPDLOCK,READPAST)
                            INNER JOIN SubjectiveItemInfo AS SI
                                ON SS.TestCode=SI.TestCode 
                                    AND SS.MajorQuestionID=SI.MajorQuestionID 
                                    AND SS.MinorQuestionID=SI.MinorQuestionID
                        WHERE SS.TestCode=''' + @TestCode + '''   
                            AND SS.MarkingStatusID = 1  
                            AND SI.QuestionGroupCode=''' + @QuestionGroupCode + '''   
                            AND (SI.MinorQuestionCount=0 
                                OR SI.MinorQuestionID>0)
                            AND SS.MarkingStepID < 3
                            AND (HandledID1 IS NULL OR HandledID1 <> '''+ @HandledID +''')
                            AND (HandledID2 IS NULL OR HandledID2 <> '''+ @HandledID +''')
                            AND NOT EXISTS
                            (
                                SELECT TOP 1 1 
                                FROM ['+@CourseID+'_SubjectiveScoreInfoFlag] WITH(NOLOCK)
                                WHERE AR = 0 AND ID = SS.ID
                                GROUP BY ID
                                HAVING ((SS.MarkingStepID <2 AND COUNT(*) >= 2) OR (SS.MarkingStepID = 2 AND COUNT(*) >= 3))
                            )
                        ORDER BY SS.StudentCode,SS.MajorQuestionID
                            
                        INSERT INTO #TStudentCode(StudentCode,TaskHandledID,HandleStepId)
                        SELECT DISTINCT TOP '+CAST(@QuestionCount AS NVARCHAR(10))+' StudentCode, null ,0
                        FROM @QuestionList
    
                        INSERT INTO ['+@CourseID+'_SubjectiveScoreInfoFlag](AR,ID)
                        SELECT 0,ID
                        FROM @QuestionList
    
                    COMMIT TRAN
                ' 
                PRINT @sql
                EXEC  sp_executesql @sql
  • 相关阅读:
    find
    Spring 中——————ClassPathResource初学
    Cookie 、Session、Token的学习
    JAVA注解之实现原理
    JAVA注解---2
    JAVA注解————1
    函数式遍程----Function
    java 反射的学习实践2
    Spring AOP 之动态代理源码分析
    正则表达式之Pattern.MULTILINE Pattern.DOTALL
  • 原文地址:https://www.cnblogs.com/nanfei/p/6524295.html
Copyright © 2011-2022 走看看