有一个.net Windows服务,它处理ms sql server中表中的部分数据。
显然,有时在事务期间会发生错误,然后我想跳过失败的记录并稍后返回。第一种方法是使用AttemptsCount列,在出错时递增它并在select查询中检查它的值。但是有一些问题,比如如何在回滚期间保存AttemptsCount等。
那么这种情况的补偿机制有哪些方法呢?在消息队列,sql作业的情况下,我很清楚,但Windows服务使用sql。感谢。
答案 0 :(得分:0)
如果您的记录具有商业价值,那么我不太乐意将其与仅限技术的专栏(例如AttemptsCount
)混合使用。所以你的回滚问题只是打破设计原则的“应得的惩罚”。
如何创建一种错误日志,保存发生错误的记录的记录ID。您可以以任何方式实现它:一个额外的表,一个队列,......然后您可以按时间处理错误日志(“我想...稍后再返回”)。当然,您应该写入此日志,而不是在原始事务本身内,而是在其外部。
因此,您将达到几个目标: