从 BizTalk 动态发送端口执行 SP

SP execution from BizTalk dynamic send port

我有一个从 BizTalk 编排执行的 sp。

当我在 SQL 服务器中执行 SP 时需要 10 秒,但是当我使用以下代码从编排执行它时,需要 1 小时。

  sqlStoredProcRequestXml = reportRequestXml;

  sqlStoredProcRequestXml(WCF.Action)= sqlProcedureName;
  sqlStoredProcRequestXml(WCF.BindingType)="sqlBinding";
  sqlStoredProcRequestXml(WCF.EnableTransaction) = false;

  sqlStoredProcRequestXml(WCF.BindingConfiguration)= @"<binding name=""sqlBinding"" sendTimeout=""02:30:00"" />";  

SndRcvSqlStoreProcRequestResponsePort(Microsoft.XLANGs.BaseTypes.Address)="mssql://" + dbServer + "//" + dbDatabase; SndRcvSqlStoreProcRequestResponsePort(Microsoft.XLANGs.BaseTypes.TransportType)="WCF-SQL";

谁能解释一下为什么在执行 SP 时会有 1 小时的差异。

这并不能解释这种差异(1 小时对 10 秒很多),但是当您从 Orchestration 调用时:

  1. 您的留言首先进入留言箱
  2. 消息被发送端口捕获
  3. 发送端口调用 SP
  4. 回复然后进入消息框
  5. Orchestration 从消息框获取响应消息

您不是从 Orchestration 直接调用您的 SP,消息通过 BizTalk 传输,但这并不能解释如此大的差异,除非您的 MsgBox 有问题。

BizTalk 没有特别延迟 sp 调用。您可以尝试按照以下方法查找根本原因:

  1. 使用SQL分析器通过BizTalk查看SP的实际执行时间
  2. 检查您环境中的其他延迟,例如 SQL 性能、msgbox 数据库、BizTalk 主机限制
  3. 检查事件查看器日志以了解发送端口主机上的任何警告或错误
  4. 确保您使用相同的数据和环境来测试 BizTalk 外部的 SP 以比较结果,有时根据数据的大小,您的查询可以 运行 在差异环境中长时间运行。
  5. 您还可以让 DBA 帮助sql分析您的 sp 调用