我正在寻找一种方法来继续执行事务,尽管在插入低优先级数据时出现错误。看起来真正的嵌套事务可能是一个解决方案,但 SQL Server 2005/2008 不支持它们。另一种解决方案是有逻辑来确定错误是否严重,但这似乎也不可能。
以下是有关我的方案的更多详细信息:
使用 ADO.NET/C# 定期将数据插入到数据库中,虽然其中一些是至关重要的,但也可能会毫无问题地丢失一些数据。插入完成后,将对数据进行一些计算。(重要的和非重要的)整个过程都在事务中,所以一切都保持同步。
目前,使用事务保存点,并对非重要插入期间发生的异常进行部分回滚。但是,这不适用于“批量中止”错误,它会自动回滚整个事务。我知道有些错误很严重,但是 SQL Server 将诸如失败的强制转换之类的事情视为批处理中止错误。(有关批处理错误的信息)如果这些错误发生在低优先级数据上,我正在尝试防止它们降低整个插入。
如果我所描述的内容是不可能的,我愿意考虑任何替代方法来实现数据完整性,但允许非重要插入失败。
谢谢你的帮助。