【问题标题】:Receive Port does not appear to be polling接收端口似乎没有轮询
【发布时间】:2015-08-04 21:58:37
【问题描述】:

我有一个单向接收端口,其 WCF 自定义 XMLReceive 位置使用 sqlBinding 类型。接收位置绑定设置为每分钟轮询一次并执行 SQL Server 存储过程。在“polledDataAvailableStatement”和“PollingStatement”中有一个过程。问题是,这些永远不会被执行,并且我找不到任何错误。

我有多个这样的端口/位置设置,除了一个之外,它们都可以正常工作。这个可以在我自己的机器上正常工作,但是当我部署到生产环境时它就不行了。 SQL Profiler 告诉我存储过程永远不会触发。除了过程名称和轮询时间之外,我对绑定中的所有内容都使用默认设置。 biztalk中没有记录错误。跟踪的消息事件显示其他编排,但不是映射到相关端口的编排。

我已尝试重新导出和导入 MSI。我已在数据库服务器上将服务帐户设置为 sysadmin。我已经通过从另一个正在工作的接收位置复制/粘贴它们来验证连接字符串。我已经重新启动了托管实例,当然还有应用程序。我所做的一切似乎都无法让那个位置着火。寻找故障排除技巧。

【问题讨论】:

  • 您重启的主机实例确实是接收位置配置使用的主机实例?接收位置正在运行,不会自行关闭,事件日志(主机实例所在的服务器)或 SQL Server 中都没有出现任何内容?
  • 所有正确...我们还在查看性能监视器中的活动端口数。有2个(应该是3个)。 IE。是说端口不活跃?昨天晚上晚些时候,通过一系列多次重启/重新部署/重新创建,这个问题神奇地消失了。我们真正改变的唯一一件事是:我们将端口绑定直接指向一个 SQL 框,而不是友好的 DNS。注意:其他端口仍指向 DNS 并正常工作。很奇怪。我害怕再次改变它/玩它。大声笑

标签: biztalk biztalk-2013


【解决方案1】:

我之前遇到过这个问题,这反映了这个特定的 SQL 服务器和 BTS 之间的 DTC 通信问题。

当您将“UseAmbientTransaction”属性设置为 false 时,您可以尝试解决此问题。 这样可以避免您在两台服务器之间的分布式事务协调器方面遇到问题。 请注意,只要将此属性设置为 False,就不会执行 PollDataAvailableStatement。

之后重新启动主机。

UseAmbientTransaction 的影响: http://social.technet.microsoft.com/wiki/contents/articles/3470.typed-polling-with-wcf-sql-adapter-best-practices-and-troubleshooting-tips.aspx

配置 DTC: https://msdn.microsoft.com/en-us/library/jj248704.aspx

【讨论】:

    【解决方案2】:

    发生这种情况似乎很奇怪,尤其是您在(正在运行接收主机的服务器的事件查看器日志)中没有看到任何错误。只有在以下情况下才会发生:

    • 您在接收端口上有一个服务窗口,即它将在一天中的特定时间处于活动状态。
    • 您的接收主机实例正在节流,在这种情况下,一些调用仍应到达 SQL 服务器
    • 您的接收端口错误地连接了不同的数据库服务器

    如果一切都按预期设置,则尝试创建一个新的接收端口并使用简单的选择语句进行测试。

    【讨论】:

    • 我不认为接收端口正在运行/活动。如果我们在 Perf Mon 中添加活动接收位置的计数,它会显示 2(应该有 3 个)。然而,这是最有帮助的答案,因为我们确实尝试了最后一件事:创建一个新的测试端口。我们无法让它工作(即使我们从工作端口复制连接字符串)。因此,我们稍微更改了字符串并将其直接指向 SQL 框(使用友好的 DNS),突然之间一切正常。注意:这只不过是一个 DNS 名称,而不是 vip。仍然不明白为什么这适用于某些端口而不是其他端口。
    • 检查您的接收主机正在运行的服务器上的 DNS,以及它是否使用 ping 响应。您是否有其他端口与此端口在同一台服务器上运行
    • 是的...同一服务器上还有 2 个人。我可以使用 PING 得到响应,它作为我们的 sql 框的 fqdn 返回。其他 2 个使用相同的友好 DNS 并且可以正常工作。怪诞的!
    • 您可以尝试设置 WCF-SQL 适配器并使用配置选项创建带有 FQDN 的 yr 连接字符串
    • 您是否有多个接收位置在同一个 SQL 服务器上使用相同的 SQL 请求进行侦听?你有多少个 BizTalk 服务器?
    【解决方案3】:

    您的主机实例帐户是否有权运行该存储过程?

    【讨论】:

    • 这是一个问题,而不是一个答案 - 我知道您没有足够的代表发表评论,但也许您可以将其改写为答案 - 例如,“这可能是由于按帐户权限”,并解释为什么以及如何解决它。
    猜你喜欢
    • 2021-06-10
    • 2017-01-29
    • 2019-01-12
    • 1970-01-01
    • 2020-09-29
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多