微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 重试命令/连接超时是否安全?

我们已经使用了一种机制(一个名为sqlDeadlockHelper的类)已经有一段时间了,并且由于死锁而在尝试失败的数据库调用时帮助了我们很多. sqlDeadlockHelper将捕获sqlException,认识到它是一个死锁,然后再试一次.第二次尝试几乎总是成功.

为命令和/或连接超时做这样的事情是否安全?我的意思是,在sql Server上完成工作是不可能的,只是在数据返回给调用者之前超时,是吗?

编辑:

已经提到交易作为将呼叫视为工作单元的方式.这样它就可以成功或完全回滚.但是,只做一件事的单个ADO.NET调用呢?是否有必要将其包装在交易中?

解决方法

根据您的工作单元,sql可以在死锁之前完成部分工作并抛出错误.处理工作单元的方式是交易.大多数sql数据库支持事务.您需要在Begin,Commit和Rollback事务中包含工作单元.

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.aspx

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐