我使用spring-boot
,mybatis
并执行异步存储过程。它是异步的,因为它是来自SSIS
包(目录模式)的过程 - 这些过程默认是异步的。
问题是在执行存储过程之前,我修改了数据库中的一些值。由于它是异步的,因此注释@Transactional
对我没有帮助。
我担心的是执行此软件包失败(SSIS目录 - start_execution
)。在这种情况下,我应该恢复数据库中的先前值(一个值,但这并不重要)。
但是,@Transactional
无法帮助我,因为您知道spring
认为该过程已成功完成且接受该事务。
如何处理这个问题 - 我的意思是在执行ssis包失败的情况下回滚?
答案 0 :(得分:1)
根据this post,您可以使用正确的参数同步运行SSIS prodecure:
[...] 您必须确保将“SYNCHRONIZED”参数添加到包执行中。在start_execution过程之前:
exec [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'SYNCHRONIZED', @parameter_value=1
此时,您应该能够像往常一样等待完成该过程并正常处理回滚。