2013-03-16 63 views
0

后继续运行这是我试着运行的查询。我正在测试一个ROLLBACK,因为我们需要在一个任务中完成它。执行查询在ROLLBACK TRANSACTION被称为

BEGIN TRANSACTION; 

declare @var bit; 
set @var = 0; 

BEGIN TRY 
    INSERT INTO Orders(ShippingAddress, BillingAddress, Status, Date, ID, CustomerID, Total, BillingInfo) 
    VALUES('10 King Road', '10 King Road', 'Pending', '2013-03-15 07:58:55.760', 16, 1, 145.95, 'Put it on my doorstep please.'); 
END TRY 
BEGIN CATCH 
    IF @var > 0 
    ROLLBACK TRANSACTION; 
END CATCH; 

IF @var > 0 
    COMMIT TRANSACTION; 

后,我跑了成功,我试图做一个SELECT * FROM Orders,现在的SQL Server只是试图运行ExecuteQuery永远...我的搭档也有同样的麻烦,但我们所有的其它表的正常工作。任何人都知道这可能是什么原因?我使用Microsoft SQL Server 2012的感谢

回答

1

什么是@var,以及何时会> 0,如果@var没有改变1入门TRANSACTION从未COMMITROLLBACK。所以表将被锁定,直到TRANSACTION结束。

+0

您如何结束交易? – aug 2013-03-16 05:07:43

+0

如果表被锁定。你可以使用'KILL'来检查表锁和'KILL'的过程。正确运行查询只是删除行'IF @var> 0' – SAM 2013-03-16 05:26:02

+0

我无法使用KILL命令,因为我没有访问权限(我不是服务器的所有者),但我认为事务超时并且查询再次正常工作。非常感谢。我再也不会那么做了--_-。 – aug 2013-03-16 05:35:41