. net +SQL Server 2005 -如何回滚事务但保留日志
本文关键字:回滚事务 保留 日志 +SQL Server 2005 net | 更新日期: 2023-09-27 18:03:16
我们有一个系统,它同时具有。net和SQLServer组件。. net组件负责启动进程,并将对存储过程的调用包含在事务中。
这个过程主要使用数据库上的存储过程来完成,这些存储过程都写到我们自己的日志表中。
现在的问题是,在. net代码中启动的事务将包含数据库代码中使用的所有其他事务,如果其中一个子事务回滚日志表就会消失。
是否有办法保留日志,回滚其他所有内容?
使用一个表变量来存储错误:这不受事务的影响
或者在错误
交易保存点可以帮助你吗?
这就是数据库级别的解决方案:
保存点提供了回滚部分事务的机制。使用SAVE TRANSACTION savepoint_name创建一个保存点声明。稍后,执行ROLLBACK TRANSACTION savepoint_name语句回滚到保存点,而不是回滚到事务开始。
- 完整描述见这里:事务保存点。
- 也看到好的(对我来说)存储过程模板的一个例子
也可以参考SqlTransaction。 c#解决方案的保存方法,希望这正是你正在寻找的:
在事务中创建一个保存点,该保存点可用于回滚事务的一部分,并指定保存点名称。