C# SQL-等待回滚完成
我正在使用超时300秒的C# SQL-等待回滚完成,c#,sql,sql-server,transactions,sqlexception,C#,Sql,Sql Server,Transactions,Sqlexception,我正在使用超时300秒的committeabletransaction删除大量记录。有时我会出错 SqlException:超时已过期。操作完成前已过超时时间,或者服务器没有响应 似乎在超时之后,SQL正在自动执行回滚,回滚需要约200秒才能完成 但是我当前的C#code捕获了SqlException并检查TransactionStatus(这是中止的)并继续进行。由于回滚正在进行中,我应该等到回滚完成。有没有办法找到回滚状态?或者我该如何处理这种情况?从这里开始 CommitteableTr
committeabletransaction
删除大量记录。有时我会出错
SqlException:超时已过期。操作完成前已过超时时间,或者服务器没有响应
似乎在超时之后,SQL正在自动执行回滚,回滚需要约200秒才能完成
但是我当前的C#code捕获了SqlException
并检查TransactionStatus
(这是中止的
)并继续进行。由于回滚正在进行中,我应该等到回滚完成。有没有办法找到回滚状态?或者我该如何处理这种情况?从这里开始
CommitteableTransaction对象可以跨函数调用和
线程。但是,这取决于应用程序开发人员来处理
异常,并在发生异常时特别调用Rollback方法
失败
我认为可以在捕获块中显式调用SqlException。因此,您需要等待完成回滚操作 从这里开始
CommitteableTransaction对象可以跨函数调用和
线程。但是,这取决于应用程序开发人员来处理
异常,并在发生异常时特别调用Rollback方法
失败
我认为可以在捕获块中显式调用SqlException。因此,您需要等待完成回滚操作 您也可以手动设置超时。请注意,回滚不是由C代码启动的。SQL server似乎在事务超时后自动执行回滚。@WPFLierner,SQL server中没有查询超时之类的东西-这纯粹是客户端的概念。基本上,在将每个语句发送到SQL Server之后,数据提供程序层将等待指定的时间段,如果该时间段过期,则向连接发送低级的
Abort
命令。所以取消处理的不是你的代码,是的,但它是客户端代码。@RogerWolf,我理解你的意思。在客户端,是否有方法等待回滚结束?您也可以手动设置超时。请注意,回滚不是由C代码启动的。SQL server似乎在事务超时后自动执行回滚。@WPFLierner,SQL server中没有查询超时之类的东西-这纯粹是客户端的概念。基本上,在将每个语句发送到SQL Server之后,数据提供程序层将等待指定的时间段,如果该时间段过期,则向连接发送低级的Abort
命令。所以取消处理的不是你的代码,是的,但它是客户端代码。@RogerWolf,我理解你的意思。在客户端,是否有方法等待回滚结束?在SqlException处理程序中尝试了Transaction.rollback(异常),但它没有等待回滚结束。在调用Rollback之前,检查了异常处理程序中的事务状态,它已被中止。尝试了SqlException处理程序中的Transaction.Rollback(异常),但它没有等待回滚结束。在调用回滚之前,检查异常处理程序中的事务状态,它已经中止。