0

我在同一时间工作在生产系统上的几个不同的东西之内未提交的,我糊涂了对多任务处理。如何找出操作的交易

我想知道报告已经执行了什么,什么在我的交易目前还没有。 是否有可能?

请看看附加的图片。

我正在运行的脚本如下。 感谢和问候 马塞洛

the message I get when closing the windonw

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表, 所以我想知道如果我犯了这个,插入将在那里。

我找不到任何在表的锁,所以我假定没有交易与锁仍然是活动的, 但

我真的想知道如何找出什么操作都是在一个事务中未提交。

问候 马塞洛

+0

我认为你没有提交事务只是做COMMIT TRAN或者如果你想在BEGIN TRAN之后回滚事务只是exec ROLL BACK TRAN – mohan111 2014-09-02 10:28:44

回答

1

运行在查询窗口中显示的所有锁下面的查询正在举行的会议。这应该给你一个挂起操作的想法。

EXEC sp_lock @@SPID; 
0

尝试@@ TRANCOUNT知道有多少交易是在会议开幕。