.Net应用程序未在连接字符串中使用故障转移伙伴

时间:2016-05-19 04:18:58

标签: c# .net sql-server ado.net

我在带有见证服务器的两台SQL 2012 Standard Edition服务器上安装了SQL镜像。镜像在SQL方面很有用,我可以故障转移到每一个都很好。问题是当我手动故障转移到镜像服务器时,我的.Net应用程序无法访问故障转移伙伴,他们只是不断尝试访问主服务器并最终超时。我可以在SQL错误日志中看到主服务器上的连接尝试;错误是"对显式指定的数据库失败"这是有道理的,因为它现在是镜像并处于恢复状态。

这是我的连接字符串:

connectionString="Server=x.x.x.x,[port];Failover Partner=x.x.x.x,[port];Database=[dbname];Network=dbmssocn;Integrated Security=SSPI;Connection Timeout=60;MultipleActiveResultSets=true"

我尝试过以下事项:

  • 增加连接超时
  • Set Pooling = False
  • Windows主机文件中的映射IP地址

如果我在故障转移后立即回收应用程序池,一切都运行良好,我甚至可以故障转移回主实例,一切都很顺利。但是,如果我必须在故障转移后手动回收应用程序池,则会破坏高可用性/自动故障转移的全部目的。

我在这里缺少什么?

编辑:我基本上需要从此页面解决方案5和6:https://blogs.msdn.microsoft.com/spike/2010/12/08/clarification-on-the-failover-partner-in-the-connectionstring-in-database-mirror-setup/

1 个答案:

答案 0 :(得分:4)

对于其他有这个问题的人。我将我的SQL实例切换回使用默认的1433端口,一切似乎完全失效。