sql-server-2008 – 当主体服务器物理上脱机时,c#中的数据库自动
我正在使用SQL Server 2008在C#中设置数据库自动故障转移,并且使用见证设置我具有“具有自动故障转移镜像的高安全性”,并且我的连接字符串看起来像
“Server = tcp:DC01; Failover Partner = tcp:DC02; database = dbname; uid = sewebsite; pwd = somerndpwd; Connect Timeout = 10; Pooling = True;” 在测试期间,当我关闭主服务器上的SQL Server服务时,自动故障转移就像一个魅力,但如果我使主服务器脱机(通过关闭服务器或查杀网卡)自动故障转移不起作用,我的网站刚出来. 我找到了this article,其中第二个帖子表明它是因为我们使用的命名管道在主体离线时不起作用,但我们在连接字符串中强制使用TCP. 我错过了什么让这个数据库自动故障转移工作? 解决方法在与MS合作一周后,我们已经弄清楚了为什么会这样.本质上,应用程序没有故障转移,因为它需要确保数据库已经故障转移 – 并且在连接确定数据库已经故障转移之前,sql连接超时. 确认数据库已故障转移(具有所有默认tcp注册表设置)的过程是: >尝试与校长沟通,看到它不再是校长 当主体关闭时,此通信大约需要21秒,因为它将: >尝试与校长沟通,等待3秒,超时 因此,如果您的sql连接没有等待21秒(实际上可能更多),那么它将在完成此舞蹈之前超时,并且它根本不会进行故障转移. 解决方案是将连接字符串中的超时设置为较大值,我们使用60秒只是为了安全. 干杯 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |