[英].NET+SQL Server 2005 - How to rollback transaction but keep the log
我们有一个同时具有 .NET 和 SQLServer 组件的系统。 .NET 组件负责启动进程并将对存储过程的调用包含在事务中。
该过程主要使用数据库上的存储过程完成,这些过程都写入我们自己的日志表。
现在,问题是在 .NET 代码中启动的事务将包含在数据库代码中使用的所有其他事务,如果其中一个子事务回滚,则日志表将消失。
有没有办法保留日志,回滚其他所有内容?
提前致谢。
使用表变量来存储错误:这不受事务的影响
或者在 procs 中使用 SET XACT_ABORT ON 隐式回滚并在错误后记录
Transaction SavePoints 可以帮助您吗?
这正是数据库级别的解决方案:
保存点提供了一种回滚部分事务的机制。 您可以使用 SAVE TRANSACTION savepoint_name 语句创建一个保存点。 稍后,您执行 ROLLBACK TRANSACTION savepoint_name 语句以回滚到保存点,而不是回滚到事务的开始。
您也可以参考SqlTransaction.Save Method for a C# 解决方案,希望这正是您正在寻找的:
在事务中创建可用于回滚事务的一部分的保存点,并指定保存点名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.