У меня есть простое приложение Biztalk 2013-r2, которое импортирует файл в таблицу, а затем выполняет длительный процесс пост-импорта (через хранимые процедуры).
Симптомы: при импорте 2 файлов
- Импорт первого файла не имеет проблем
- Затем начинается постобработка (медленная, как и ожидалось, из-за длительной хранимой процедуры).
- Затем, если вы отбросите второй файл, постобработка первого файла исчезнет, и произойдет второй импорт.
- Затем они начинают чередоваться взад и вперед (вы можете видеть, что поле постобработки заполняется, как и ожидалось)
- Оба порта отправки активны, иногда вы видите обезвоживание третьего
Поскольку об ошибках не сообщается, это должна быть настройка или мне нужно перенести постобработку из длительной транзакции?
Подробности:
- Тип транзакции Orchestration долго выполняется
- Время ожидания для порта отправки постобработки составляет 59 минут.
- Хранимая процедура постобработки вызывает дочерние хранимые процедуры.
- Нигде не сообщается об ошибках
- Оба порта отправки заказали доставку проверенной
Хранимые процедуры постобработки:
CREATE PROCEDURE [sync].[MPostProcessing]
@Code NVARCHAR(2)
AS
----
---- 2. Normalize Address
----
IF @Code = '99'
EXEC sync.AElBatch @Code = @Code
CREATE PROCEDURE [sync].[AElBatch ] @Code AS VARCHAR(2)
AS
DECLARE @ID AS INT
WHILE EXISTS ( SELECT ID
FROM sync.[mtable]
WHERE Code = @Code
AND PostProcessingDone = 0 )
BEGIN
SELECT TOP 1
@ID = ID
FROM sync.[mtable]
WHERE Code = @Code
AND PostProcessingDone = 0
EXEC sync.PParse @ID = @ID
UPDATE sync.[mtable]
SET PostProcessingDone = 1
WHERE Code = @Code
AND ID = @ID
END
Затем хранимая процедура PPARse делает больше (все работает, ошибок нет)
Изображение консоли администрирования Biztalk Server