繁体   English   中英

.NET+SQL Server 2005 - 如何回滚事务但保留日志

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM