У нас есть бизнес-процесс для нашего BI приборной панели сводного отчета, как показано ниже:SQL последовательность выполнения в транзакции
- 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
Я вижу работу начала до последней прочитанной записи в таблице покупателя.
Может ли кто-нибудь посоветовать, как решить эту проблему с синхронизацией и объяснить, как несколько операторов выполняются последовательно за сценой? Спасибо!
похоже, что он должен выполняться последовательно. что делать, если вы это сделаете: begin tran> insert ....> insert ....> commit tran> begin tran> call job> commit tran – FLICKER