我在同一时间工作在生产系统上的几个不同的东西之内未提交的,我糊涂了对多任务处理。如何找出操作的交易
我想知道报告已经执行了什么,什么在我的交易目前还没有。 是否有可能?
请看看附加的图片。
我正在运行的脚本如下。 感谢和问候 马塞洛
USE Bocss2
BEGIN TRANSACTION
--Get order items
select @@trancount
SELECT o.strBxOrderNo ,
sintOrderStatusID ,
sintOrderSeqNo
INTO #t1
FROM dbo.tblBOrder o
JOIN dbo.tblBOrderItem oi ON o.strBxOrderNo = oi.strBxOrderNo
JOIN dbo.tblProdName pn ON oi.strItemNo = pn.strItemNo
WHERE strTier1 = 'ar636'
AND sdtmOrderItemStatusUpdated = '31-aug-2014 02:01:00'
AND sintOrderItemStatusId = 9
--(1063 row(s) affected)
--get order history records
SELECT oh.*
INTO #t2
FROM dbo.tblBOrderHistory oh
JOIN (SELECT MAX(dtmAdded) dtmAdded ,
strBxOrderNo
FROM dbo.tblBOrderHistory
WHERE strBxOrderNo IN (SELECT strBxOrderNo
FROM #t1)
AND sintOrderStatusId <> 8
GROUP BY strBxOrderNo
) oh2 ON oh.strBxOrderNo = oh2.strBxOrderNo
AND oh.dtmAdded = oh2.dtmAdded
--(929 row(s) affected)
--Perform fix
select o.* into tablebackups.dbo._MM_20140901_tblBOrder
FROM dbo.tblBOrder o
JOIN #t2 ON o.strBxOrderNo = #t2.strBxOrderNo
--(929 row(s) affected)
UPDATE o
SET sintOrderStatusID = #t2.sintOrderStatusID
FROM dbo.tblBOrder o
JOIN #t2 ON o.strBxOrderNo = #t2.strBxOrderNo
INSERT INTO dbo.tblBOrderHistory
(strBxOrderNo ,
sintOrderStatusId ,
dtmAdded ,
lngUserId ,
lngOrderFileId
)
SELECT strBxOrderNo ,
sintOrderStatusId ,
GETDATE() ,
3277 ,
lngOrderFileId
FROM #t2
select oi.* into tablebackups.dbo._MM_20140901_tblBOrderItem
FROM dbo.tblBOrderItem oi
JOIN #t1 ON oi.strBxOrderNo = #t1.strBxOrderNo
AND oi.sintOrderSeqNo = #t1.sintOrderSeqNo
UPDATE oi
SET sintOrderItemStatusId = 3 ,
sdtmOrderItemStatusUpdated = GETDATE()
FROM dbo.tblBOrderItem oi
JOIN #t1 ON oi.strBxOrderNo = #t1.strBxOrderNo
AND oi.sintOrderSeqNo = #t1.sintOrderSeqNo
--1063
我不能只是ROLLBACK这一次整个事情,因为,正如我说我糊涂了对多任务我已经在运行所有这些更新不同的窗口。
唯一的是插入没有完成,我canot重新生成#t1和#t2表, 所以我想知道如果我犯了这个,插入将在那里。
我找不到任何在表的锁,所以我假定没有交易与锁仍然是活动的, 但
我真的想知道如何找出什么操作都是在一个事务中未提交。
问候 马塞洛
我认为你没有提交事务只是做COMMIT TRAN或者如果你想在BEGIN TRAN之后回滚事务只是exec ROLL BACK TRAN – mohan111 2014-09-02 10:28:44