事务

时间:2016-02-05 00:18:02

标签: sql-server transactions execution-time

我们的BI仪表板摘要报告有一个业务流程如下:

  1. SAP将事务数据写入SQL Server数据库
  2. SAP在SQL Server中触发作业,以根据事务数据填充摘要数据
  3. SAP在事务中执行此操作

    BEGIN TRAN
        Prepare INSERT statements to STOCK_SALES_VARIANT (2000 records)
        Prepare INSERT statements to STOCK_SALES_BUYER (16000 records)
        CALL JOB "Batch Insert"
        CALL JOB "Populate Summary"
    COMMIT
    

    我们发现在STOCK_SALES_BUYER数据插入完成之前调用了“填充摘要”作业。这会导致不准确的摘要数据。

    我添加了一个默认值为getdate()的列来捕获插入时的时间。

    这是日志:

    Variant table - 2016-02-05 10:41:08.547 to 2016-02-05 10:41:09.817
    Buyer table - 2016-02-05 10:41:11.477     2016-02-05 10:41:15.480
    Job - 2016-02-05 10:41:12 to 2016-02-05 10:41:21
    

    我可以看到作业在买家表中写入的最后一条记录开始之前。

    有人可以建议如何解决这个时间问题并解释多个语句如何在场景后依次运行?谢谢!

1 个答案:

答案 0 :(得分:0)

确定问题是第二个作业在存储过程中第一个作业完成之前开始。我做了一些研究,发现这是存储过程的自然设计。在第二个作业中添加延迟计时器有助于解决问题。