它们会立即回滚吗?它们会在一段时间后回滚吗?他们是否处于未承诺状态?
如果使用连接池并且只是重置连接,行为是否相同?
可能重复:
SQL Server和事务中间的连接丢失
我有一个.NET 3.5客户端应用程序,它启动MS SQL Server 2005上长时间运行(5-10米)的存储过程.存储的过程开始于BEGIN TRAN和结束COMMIT TRAN.
如果我拉动工作站上的插头,存储过程会发生什么,它是否完成运行?它在所有情况下都能完成运行吗?或者与工作站的连接丢失会导致数据库中止存储过程吗?
编辑:工作站和SQL Server在不同的框上.
我试图更好地理解SQL Server事务的细微差别.
假设我有一个更新1,000个现有行的查询,更新其中一个列的值为1到1,000.可以执行此查询,并且在完成时,这些行不会按顺序编号.这是因为在查询完成之前,另一个查询可能会修改其中一行.
另一方面,如果我将这些更新包装在一个事务中,这可以保证如果任何一个更新失败,我可能会失败所有更新.但它是否也意味着当我完成时,那些行将保证是顺序的?
换句话说,交易总是原子的吗?