【发布时间】:2016-02-05 00:18:01
【问题描述】:
我们的 BI 仪表板摘要报告的业务流程如下:
- SAP 将事务数据写入 SQL Server 数据库
- SAP 触发 SQL Server 中的作业以根据事务数据填充摘要数据
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
我可以看到工作在买家表中写入最后一条记录之前开始。
有人可以建议如何解决这个时间问题并解释多个语句如何在幕后按顺序运行吗?谢谢!
【问题讨论】:
-
看起来应该按顺序执行。如果你这样做:开始 tran > 插入 .... > 插入 .... > 提交 tran > 开始 tran > 调用作业 > 提交 tran
标签: sql-server transactions execution-time