【发布时间】:2009-11-11 22:03:26
【问题描述】:
我正在寻找一种方法来继续执行事务,尽管在插入低优先级数据时出现错误。看起来真正的嵌套事务可能是一种解决方案,但 SQL Server 2005/2008 不支持它们。另一种解决方案是有逻辑来确定错误是否严重,但这似乎也不可能。
下面是我的场景的更多细节:
使用 ADO.NET/C# 定期将数据插入到数据库中,虽然其中一些很重要,但也有一些可能毫无问题地丢失。插入完成后,将对数据进行一些计算。 (重要的和非重要的)整个过程都在一个事务中,所以一切都保持同步。
目前,使用事务保存点,并对非重要插入期间发生的异常进行部分回滚。但是,这不适用于“批量中止”错误,它会自动回滚整个事务。我知道有些错误很严重,但是 SQL Server 将失败的强制转换等错误视为批处理中止错误。 (Info on batch errors) 如果这些错误发生在低优先级数据上,我会尝试防止这些错误导致整个插入中断。
如果我所描述的不可行,我愿意考虑任何替代方法来实现数据完整性,但允许非重要插入失败。
感谢您的帮助。
【问题讨论】:
标签: sql ado.net error-handling transactions rollback