【问题标题】:How to deal with long asynchronous stored procedure called from spring server?如何处理从spring服务器调用的长异步存储过程?
【发布时间】:2017-03-11 23:59:41
【问题描述】:

我使用spring-bootmybatis 并执行异步存储过程。它是异步的,因为它是来自 SSIS 包(目录模式)的过程 - 这些过程默认情况下是异步的。

问题是在执行存储过程之前,我修改了数据库中的一些值。由于它是异步的,注释@Transactional 对我没有帮助。

我担心的是无法执行这个包(SSIS 目录 - start_execution)。在这种情况下,我应该恢复数据库中的先前值(一个值,但在这里无关紧要)。 但是,@Transactional 无法帮助我,因为如您所知,spring 认为该过程已成功完成并且它接受了交易。

如何处理这个问题 - 我的意思是在 ssis 包执行失败的情况下回滚?

【问题讨论】:

    标签: java multithreading spring-boot transactions mybatis


    【解决方案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

    此时,您应该可以像往常一样等待程序完成并正常处理回滚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2018-06-23
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多