现在我的应用程序连接数据库时,在发生故障转移时似乎存在问题——我需要手动干预并更改连接字符串才能重新连接。到目前为止,我找到的最佳解决方案涉及使用连接字符串的Failover Partner参数,但它既不直观也不完整:
Data Source="Mirror";Failover Partner="Principal"
。可以在这里找到更多信息。从上面博客中的示例(方案#3)中可以看出,当第一次故障转移发生时,如果主要节点(故障转移伙伴)不可用,则将使用数据源(即新的主要节点)。如果它再次失败(我只尝试了一个有限的时间),则会出现错误消息。发生这种情况是因为连接字符串被缓存,因此除非此连接字符串已刷新,否则它将继续输出错误(似乎在遇到错误后连接字符串会在大约5分钟后刷新)。如果在故障转移后交换数据源和故障转移伙伴,则还会有一次平稳故障转移。
有没有一种方法可以实现对使用镜像数据库的应用程序的完全自动故障转移(无需看到错误)?
我可以看到使用自定义脚本的潜在解决方案,该脚本将轮询当前活动的数据库节点名称,并相应地调整连接字符串,但是目前似乎过于繁琐。