c# – 重试命令/连接超时是否安全?
发布时间:2020-12-15 21:54:32 所属栏目:百科 来源:网络整理
导读:我们已经使用了一种机制(一个名为SqlDeadlockHelper的类)已经有一段时间了,并且由于死锁而在尝试失败的数据库调用时帮助了我们很多. SqlDeadlockHelper将捕获SqlException,认识到它是一个死锁,然后再试一次.第二次尝试几乎总是成功. 为命令和/或连接超时做这
我们已经使用了一种机制(一个名为SqlDeadlockHelper的类)已经有一段时间了,并且由于死锁而在尝试失败的数据库调用时帮助了我们很多. SqlDeadlockHelper将捕获SqlException,认识到它是一个死锁,然后再试一次.第二次尝试几乎总是成功.
为命令和/或连接超时做这样的事情是否安全?我的意思是,在SQL Server上完成工作是不可能的,只是在数据返回给调用者之前超时,是吗? 编辑: 已经提到交易作为将呼叫视为工作单元的方式.这样它就可以成功或完全回滚.但是,只做一件事的单个ADO.NET调用呢?是否有必要将其包装在交易中? 解决方法
根据您的工作单元,SQL可以在死锁之前完成部分工作并抛出错误.处理工作单元的方式是交易.大多数SQL数据库支持事务.您需要在Begin,Commit和Rollback事务中包含工作单元.
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.aspx (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |