我有一个简单的 Biztalk 应用程序 2013-r2 将文件导入表中,然后执行长时间运行的导入后过程(通过存储过程)。
症状:导入2个文件时
- 第一个文件的导入没有问题
- 然后,后处理开始(由于长时间运行的存储过程,如预期的那样慢)
- 然后,如果您删除第二个文件,则第一个文件后处理消失并进行第二次导入。
- 然后它们开始来回交替(您可以看到后处理字段按预期填充)
- 两个发送端口都处于活动状态,有时您会看到第三个端口脱水
由于没有报告错误,这必须是一个设置,还是我需要将后期处理移出长期运行的事务?
细节:
- 编排事务类型长时间运行
- 后处理发送端口的超时时间为 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 服务器管理控制台的图像