![]() |
#7 |
Участник
|
Откопал из загашников запросик, кажется это тот, на котором я ловил ошибочное поведение MS SQL :
X++: BEGIN TRAN UPDATE BATCH SET STATUS=5 WHERE ((STATUS=1) AND (CONSTRAINTTYPE=0)) AND EXISTS ( SELECT 'x' FROM BATCHJOB T2 WITH ( READCOMMITTEDLOCK) WHERE ((T2.STATUS=2) AND (BATCH.BATCHJOBID=T2.RECID)) AND NOT (EXISTS ( SELECT 'x' FROM BATCHCONSTRAINTS T3 WITH ( READCOMMITTEDLOCK) WHERE EXISTS ( SELECT 'x' FROM BATCH T4 WITH ( READCOMMITTEDLOCK) WHERE (((T3.DEPENDSONBATCHID=T4.RECID) AND (T3.BATCHID=BATCH.RECID)) AND ((((T4.STATUS<>3) AND (T4.STATUS<>4)) OR ((T3.EXPECTEDSTATUS=4) AND (T4.STATUS=3))) OR ((T3.EXPECTEDSTATUS=4) AND (T4.STATUS=3)))))))) --COMMIT TRAN --ROLLBACK TRAN 1. Создать тестовую среду 2. Открыть и запустить запросик в одном окне SSMS без завершения транзакции 3. Открыть и запустить запросик во втором окне SSMS без завершения транзакции 4. Завершить транзакции в первом и затем во втором окне (или наоборот) 5. Насладится результатами |
|
|
За это сообщение автора поблагодарили: Logger (5), Raven Melancholic (10). |
Теги |
ax2012, batch, batchrun, reqreaderwriterlock, баг, блокировки, закрытие склада |
|
|