我三台服务器A,B,C,装了SQL2008, 初始配置数据库为:A主体,B镜像,C见证,配置为自动故障转移的运行模式.
在另外一台服务器D上运行ASP.NET应用程序,连接字符串设置为:
Data Source=A;Failover Partner=B;Initial Catalog=dbname;User Id=sa;Password=xxx;程序启动时,如果数据库A为镜像,B为主体时, 断开服务器B的连接, 数据库A变成主体, ASP.NET程序在报告一次错误后刷新时会自动连接A, 这过程几秒就能完成. 这没有问题.但问题就出在这: 如果程序启动时A为主体,B为镜像时, 断开服务器A的连接, 这里数据库B自动切换成主体提供服务, 但ASP.NET程序需要刷新, 好几分钟才会自动转移连接到B.请问: 我哪里弄错了吗?
在另外一台服务器D上运行ASP.NET应用程序,连接字符串设置为:
Data Source=A;Failover Partner=B;Initial Catalog=dbname;User Id=sa;Password=xxx;程序启动时,如果数据库A为镜像,B为主体时, 断开服务器B的连接, 数据库A变成主体, ASP.NET程序在报告一次错误后刷新时会自动连接A, 这过程几秒就能完成. 这没有问题.但问题就出在这: 如果程序启动时A为主体,B为镜像时, 断开服务器A的连接, 这里数据库B自动切换成主体提供服务, 但ASP.NET程序需要刷新, 好几分钟才会自动转移连接到B.请问: 我哪里弄错了吗?
按说正常的镜像应该在秒一级别就可以完成了。
看楼主描述的状况,应该是外围IP配置的问题。 A(mirror) B(Principle)的状况可以顺利处理的话,建议楼主检测下DNS配置是否一致!
禁用A机网卡后,B机事件查看器里能看到这几条。这应该是正常的。但在不恢复A连线的情况下,程序需要3分钟左右的时间才能自动切换连接到B。 B为主体A为镜像时禁用B的网卡时程序切换很快,10秒以内。莫非连接字符串中Data Source=A;Failover Partner=B;这里还分A,B的先后或优先级的?
http://support.microsoft.com/?scid=kb%3Ben-us%3B912151&x=4&y=11
下载了这个补丁, 安装时提示: Windows Installer 服务不能安装此升级修补程序,因为找不到要升级的程序,或者升级修补程序可能更新的是不同版本的程序……可能我这装的是.NET 2.0打了SP2的补丁了, 这补丁不能用了......
我认为可能的原因是:
1. 服务器的网络连接可能有问题
2. 我使用的是sp2,可能sp2都有这个问题,我在其它机器上使用sp3是正常的,因为目前的服务器是有运行正式程序,所以不方便升级到sp3,这个部分没去测试
3. 是否与window2003系统有关,或是多核有关(可能性不大)问题的具体表现:当主体服务器的DB服务停止时,原镜像服务器已经变成了主体,但ado.net还是去连接原主体服务器,所以会导致连接不上,但过了一段时间就可以了,这时间大概是1分钟以上