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
桂棹兮兰桨,击空明兮溯流光。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!