我们最近将我们的 SQL Server 分发数据库迁移到多子网故障转移群集,并且发现偶尔在从发布者添加文章/查看复制状态时,我们会收到如下错误:
无法为链接服务器“repl_distributor”初始化 OLE DB 提供程序“SQLNCLI11”的数据源对象。(.Net SqlClient 数据提供者)
这似乎是由于链接服务器连接与多子网故障转移集群通信(如此处所述)
除了在我们的发布者(也是多子网故障转移集群)的每个节点上实现 ODBC 连接的解决方案之外,我们还可以尝试修复连接到多子网 FCI 的链接服务器吗?
MultiSubnetFailover=True
您链接到的解决方案通过使用连接字符串设置克服了连接到多子网故障转移组的问题。设置处理问题的方式是尝试并行连接多个连接,而不是一个接一个(默认行为)。这增加了在达到连接超时限制之前成功建立连接的机会。
如果您不想使用该选项(您提到不希望在所有集群服务器上配置 ODBC 连接的开销),另一种解决方案是将(链接)服务器级连接超时设置增加到足够高的值处理串行连接尝试。
链接服务器上的默认连接超时为 10 秒(在设置屏幕上用“0”表示)。您可以通过执行以下操作将超时时间增加到 20 秒:
如果您需要将连接超时更改为更高的值,因为秒 20 秒太低:
“连接超时”默认值的文档有点令人困惑。
sp_serveroption
说sp_configure
不支持名为“连接超时”的选项,但有一个名为“远程登录超时”的选项(请参阅服务器配置选项)。这里的描述听起来像我们正在寻找的东西:在实践中,我只是使用默认设置在本地创建了一个链接服务器,关闭了目标实例,并尝试对其进行查询。10 秒超时 =)
除了 jadarnel27 已经说过的,最新版本的 OLEDB 驱动程序支持
MultiSubnetFailover=True
https://blogs.msdn.microsoft.com/sqlnativeclient/2018/03/30/released-microsoft-ole-db-driver-for-sql-server/