微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过 SQL 从 BizTalk 的上下文中获取 ReceivedFileName

如何解决通过 SQL 从 BizTalk 的上下文中获取 ReceivedFileName

我们有一个 BizTalk 集成,可以从 Excel 文件生成发票,这些 Excel 文件是手动处理的,有时它们会被两次放入接收位置,导致需要处理的发票重复,有时是数千张发票。>

我希望阻止 BizTalk 处理已经处理过的文件

我有从上下文中提取属性的 C# 代码。但是为了能够使用该代码,我必须将该端口的所有上下文放入 C# 代码中并搜索到达的新文件。这会导致大量不必要的数据在网络上传输。

我想弄清楚如何在数据库中创建一个存储过程,该存储过程将文件名作为参数并返回真/假,以确定它是否已被提前接收。 目前我正在查看表 [BizTalkDTADb].[dbo].[btsv_Tracking_Spool] 中的上下文,我知道它包含接收到的文件文件名。

DECLARE @StartDate as datetime = '2021-01-01'
DECLARE @EndDate as datetime = '2021-01-31'
DECLARE @MyPortName as nvarchar(255) = 'Prt.RcvExcel'

SELECT 
app.nvcName as BizTalkApplication,'ReceivePort' as PortType,tspool.imgContext as 'Context',TrackingData.uidMessageInstanceId as MessageID,TrackingData.dtTimestamp as MyTimeStamp,TrackingData.nPortId,TrackingData.dtInsertionTimeStamp as MyInsertTimeStamp
FROM .BizTalkDTADb.dbo.dta_MessageInOutEvents AS TrackingData WITH (NOLOCK)
INNER JOIN .BizTalkMgmtDb.dbo.bts_receiveport rp WITH (NOLOCK)
INNER JOIN .BizTalkDTADb.dbo.dta_PortName pp WITH (NOLOCK) ON rp.nvcName = pp.strPortName ON
TrackingData.nPortId = pp.nPortId
INNER JOIN .BizTalkMgmtDb.dbo.bts_application app WITH (NOLOCK) ON rp.nApplicationID = app.nID
INNER JOIN .BizTalkDTADb.dbo.btsv_Tracking_Spool tspool WITH (NOLOCK) ON tspool.uidMsgiD = TrackingData.uidMessageInstanceId
WHERE TrackingData.nStatus=0 AND TrackingData.dtInsertionTimeStamp > @StartDate AND TrackingData.dtInsertionTimeStamp < @EndDate AND
pp.strPortName = @MyPortName

我如何在 sql 中实现这一点?或者是否有使用一些内置功能在编排中执行此操作的更智能方法?我在编排中有接收到的文件名称

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。