2011-03-10 24 views
0

我只是调试这个错误,当我向表格写一行时突然出现这个错误。如果我创建一个TransactionScope,如果我在调试时停止它,是否有机会阻止数据库?

超时已过期。在完成 操作或服务器不是 响应之前已经过去了超时期限 。该声明已被终止 。

它与交易范围有关吗?我在想,如果我创建一个事务范围,并且通过调试,并且在调试过程中在达到trasnaction范围的末尾之前停止了应用程序 - 是否有机会阻止数据库?

如果是这样,我该如何解锁它?

注 - 这可能会帮助,现在,我无法插入表中的行,但有访问和更新现有的行

更新 - 嗯,我重置SQL Server服务,它似乎已经完成了招。尽管如此,我还是很好奇听到它是如何锁定在第一位的 - 我不希望我的代码的某些部分在制作中发生这种情况。

回答

1

如果打开一个数据库事务会锁定整个数据库,那将会非常令人失望。一般来说,SQL Server以每行为基础进行锁定,然后根据需要升级这些锁(我在此简化了大量重要事项)。

每个事务都有一个超时给它完成。如果这段时间过去了,而你又没有提交或回滚,那么你会得到“Timeout expired”异常。

就“畅通”而言,您通常不必担心。关闭连接后,所有内容都会解锁。

+0

但是如果我在使用transactionscope结束之前停止应用程序,它会自动关闭连接吗? – Diskdrive 2011-03-10 22:22:15

相关问题