【问题标题】:How do you configure a BizTalk WCF-SQL adapter to get data from a SQL Server 2012 "always on" replica database?如何配置 BizTalk WCF-SQL 适配器以从 SQL Server 2012“始终在线”副本数据库中获取数据?
【发布时间】:2013-12-17 21:01:11
【问题描述】:

我们有一个客户端将使用 SQL Server 2012 的 AlwaysOn 可用性功能。 他们想让 BizTalk WCF-SQL 端口连接到只读副本。

主题上的documentation 表示必须与 SQL Server 2012 可用性组侦听器建立连接,并且该连接必须能够设置“ApplicationIntent”参数。这告诉 SQL 侦听器该连接是只读意图连接,并且应该将其重定向到可读的辅助副本。如果没有这个工作,将与主数据库建立连接,这不是我们想要的。

如何在 BizTalk WCF-SQL 适配器上配置“ApplicationIntent”参数?

【问题讨论】:

    标签: sql sql-server wcf biztalk biztalk-2013


    【解决方案1】:

    无法通过 WCF-SQL 适配器执行此操作。 我们不得不使用外部帮助器类来使用连接字符串创建连接并查询数据库。

    更新:一位同事就该问题写的博客Can I use a BizTalk WCF-SQL send adapter with a SQL 2012 Always on Database? 下面引用了一个 sn-p。

    总的来说,我认为您的选择是(按偏好顺序):

    • 如果您需要连接到启用此功能的 SQL 服务器,请禁用 SQL 服务器上的 AlwaysOn 可用性组/镜像

    • 禁用事务并实现能够处理重复的逻辑。

    • 禁用事务并使用自定义逻辑处理重复或丢失的消息(例如,发送两次并比较和实施错误处理)。您需要编写自己的 DTC 来处理这可能非常复杂。

    • 禁用事务并在不处理重复的情况下承受重复或丢失消息的风险。

    【讨论】:

      【解决方案2】:

      我认为您需要使用 WCF-Custom + sqlBinding 来指定连接字符串。

      【讨论】:

      • 在使用 sqlBinding 的 WCF-Custom Binding 中,您在 General 选项卡中指定 URI。关于我们唯一没有做的事情是尝试将它像这样放在地址(URI)中:mssql://localhost/?ApplicationIntent=ReadOnly 但我们不知道这是否可行,但我们将对其进行测试一旦我们为它设置了环境。
      • 我们尝试将它添加到URI中,没有效果,所以不是解决方案。
      【解决方案3】:

      在您提供的链接中,他们在连接字符串中进行了操作。查看其中的最后一项:

      Server=tcp:AGListener,1433;Database=AdventureWorks;
      IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly
      

      看起来很简单...

      【讨论】:

      • 不幸的是,在 BizTalk 中您无法直接控制连接字符串,因此这可能不是解决方案。
      猜你喜欢
      • 2019-06-06
      • 2021-07-04
      • 2014-04-25
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      相关资源
      最近更新 更多