日期:2014-05-19  浏览次数:20440 次

如果带锁的事务自己不结束怎么办? && 把程序里的多个SQL放进一个事务 ?
如:
BEGIN   TRAN
SELECT   *   FROM   [TABLE]   WITH(XLOCK)   WHERE   ...
没了,   没有COMMIT,   这样,   这两句执行以后,  

这个事务就一直没办法结束,   怎么才能检测这种情况,
并强行结束这个事务?


另外,在程序里面两次或多次执行SQL   语句,   有办法把它们放进一个事务里吗?
如:
先用SELECT   查询,   然后在程序里对查询结果做处理,   再用UPDATE   语句更新数据库,   前后两个动作(SELECT+UPDATE)   能放进一个事务里吗?

谢谢!

------解决方案--------------------
BEGIN TRAN
SELECT * FROM [TABLE] WITH(XLOCK) WHERE ...
没了, 没有COMMIT, 这样, 这两句执行以后,

这个事务就一直没办法结束, 怎么才能检测这种情况,
并强行结束这个事务?
----------------------------
使用@@trancount检测一下,如果大于0则说明当前连接中有事务在执行.
if @@trancount > 0
rollback /*回滚事务*/