业务日志记录被回滚的问题
情况是这样的,公司的逻辑是在触发器中做一堆事情,然后最后成功或者回滚
我在这些逻辑中会通过一个公用sp记录很多的日志信息到一张审计表,可是万一最后触发器回滚了,我记录的那些信息也都被回滚了。
sqlserver没有自治事务的概念,google了下,方案是用CLR来实现,感觉有点复杂,能不能有简单的在T-SQL级别能搞定的方案?
比如用Service Broker之类的异步消息件能实现么? 或者别的方法,谢谢大家。
------解决方案--------------------触发器回滚也是在指定程序范围(begin tran 到 rollback tran 之间)语句内容的回滚,你把你写的东西放在begin tran前不就行了.
------解决方案--------------------貌似是处理逻辑的问题。触发器回滚,之前记录的日志也会回滚这块,好像需要调整。
另外,利用触发器做一堆事情,可能会带来不好的性能体现。
触发器对表的每一行都会处理一个事务, 长时间的增删改操作,小数据量没啥问题 ,数据多了就得要优化了。
------解决方案--------------------如果是调试的话,你还不如用跟踪.
------解决方案--------------------
------解决方案--------------------SQL SERVER中只能调节数据库的隔离级别 而且只在当前事务生效
使用 最低级别的隔离级别试试
但是这样不能保证数据的安全性。
------解决方案--------------------可以在存储过程里使用事务,将业务逻辑的操作和日志记录放在一起,要么一起成功,要么一起回滚。