关于数据库镜像自动故障转移的问题.

wapit 2009-12-23 03:11:37
我三台服务器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.

请问: 我哪里弄错了吗?
...全文
274 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
rpure 2010-02-09
  • 打赏
  • 举报
回复
我的证书没有过期,估计是连接池问题,我得到一位网友的帮助,连接字符串中,server与Failover Partner的地址对换一下,这样可以解决主体出问题时,备机切换成主体后可以被正常连接。不过当原主体服务器恢复后,没有手动切换成主体,备机(此时为主体)出故障,则会导致之前的问题。我在本地测试一切正常,本地的版本是SQL2005开发版sp3,服务器使用的是SQL2005企业版sp2,估计是版本问题吧。不知SQL2008是否也存在该问题!!有知道的朋友也麻烦提供一些建议!感谢!
wapit 2010-02-07
  • 打赏
  • 举报
回复
我问题解决了. 忘了补上了..........镜像认证的证书过期了. 重新做了一个........
rpure 2010-02-06
  • 打赏
  • 举报
回复
这里有朋友说打补丁,但补丁装不了,服务器上的.net framework版本是3.5的,而补丁是06年出的,按理说.net3.5已经把该问题修复了
rpure 2010-02-06
  • 打赏
  • 举报
回复
数据库版本是SQL2005 sp2
rpure 2010-02-06
  • 打赏
  • 举报
回复
我也遇到类似的问题,如果你有找到解决方法,麻烦也告知一下。
我认为可能的原因是:
1. 服务器的网络连接可能有问题
2. 我使用的是sp2,可能sp2都有这个问题,我在其它机器上使用sp3是正常的,因为目前的服务器是有运行正式程序,所以不方便升级到sp3,这个部分没去测试
3. 是否与window2003系统有关,或是多核有关(可能性不大)

问题的具体表现:当主体服务器的DB服务停止时,原镜像服务器已经变成了主体,但ado.net还是去连接原主体服务器,所以会导致连接不上,但过了一段时间就可以了,这时间大概是1分钟以上
wapit 2010-01-03
  • 打赏
  • 举报
回复
顶啊! 每天回帖即可获得10分可用分!
wapit 2009-12-31
  • 打赏
  • 举报
回复
没人接分了......
liyangfd 2009-12-28
  • 打赏
  • 举报
回复
接分
wapit 2009-12-25
  • 打赏
  • 举报
回复
问题继续存在, 加分继续等待高人出现......
no_mIss 2009-12-24
  • 打赏
  • 举报
回复
但问题就出在这: 如果程序启动时A为主体,B为镜像时, 断开服务器A的连接, 这里数据库B自动切换成主体提供服务, 但ASP.NET程序需要刷新, 好几分钟才会自动转移连接到B.

贴一下断开A后,B的log有没有什么信息?
wapit 2009-12-24
  • 打赏
  • 举报
回复

下载了这个补丁, 安装时提示: Windows Installer 服务不能安装此升级修补程序,因为找不到要升级的程序,或者升级修补程序可能更新的是不同版本的程序……

可能我这装的是.NET 2.0打了SP2的补丁了, 这补丁不能用了......
wapit 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 garnett_kg 的回复:]
ADO.NET 2.0吗?

打上这个补丁看看。
http://support.microsoft.com/?scid=kb%3Ben-us%3B912151&x=4&y=11
[/Quote]
对. ADO.NET 2.0, SQL Server 2008标准版
Garnett_KG 2009-12-24
  • 打赏
  • 举报
回复
ADO.NET 2.0吗?

打上这个补丁看看。
http://support.microsoft.com/?scid=kb%3Ben-us%3B912151&x=4&y=11
wapit 2009-12-24
  • 打赏
  • 举报
回复
[Quote]由于 自动故障转移,镜像数据库 "xxx" 正在由 "MIRROR" 向 "PRINCIPAL" 角色转变。[/Quote]
以及
[Quote]TCP://192.168.xxx.xx:xxxx的数据库镜像连接错误......[/Quote]
这是两条事件。
wapit 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 no_miss 的回复:]
但问题就出在这: 如果程序启动时A为主体,B为镜像时, 断开服务器A的连接, 这里数据库B自动切换成主体提供服务, 但ASP.NET程序需要刷新, 好几分钟才会自动转移连接到B.

贴一下断开A后,B的log有没有什么信息?
[/Quote]哪个log? 事件查看器?
禁用A机网卡后,B机事件查看器里能看到[Quote]由于 自动故障转移,镜像数据库 "xxx" 正在由 "MIRROR" 向 "PRINCIPAL" 角色转变。[/Quote][Quote]TCP://192.168.xxx.xx:xxxx的数据库镜像连接错误......[/Quote]这几条。这应该是正常的。但在不恢复A连线的情况下,程序需要3分钟左右的时间才能自动切换连接到B。 B为主体A为镜像时禁用B的网卡时程序切换很快,10秒以内。

莫非连接字符串中Data Source=A;Failover Partner=B;这里还分A,B的先后或优先级的?
dawugui 2009-12-23
  • 打赏
  • 举报
回复
不懂,帮顶,学习,蹭分.
wapit 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 orchidcat 的回复:]
如果程序启动时A为主体,B为镜像时, 断开服务器A的连接, 这里数据库B自动切换成主体提供服务, 但ASP.NET程序需要刷新, 好几分钟才会自动转移连接到B.


按说正常的镜像应该在秒一级别就可以完成了。
看楼主描述的状况,应该是外围IP配置的问题。 A(mirror) B(Principle)的状况可以顺利处理的话,建议楼主检测下DNS配置是否一致!

[/Quote]
都是双网卡机器, 互连用的内网IP地址, 没有配置网关与DNS.
  • 打赏
  • 举报
回复
学习,这个我在项目里面还没遇到过
Mr_Nice 2009-12-23
  • 打赏
  • 举报
回复
如果程序启动时A为主体,B为镜像时, 断开服务器A的连接, 这里数据库B自动切换成主体提供服务, 但ASP.NET程序需要刷新, 好几分钟才会自动转移连接到B.


按说正常的镜像应该在秒一级别就可以完成了。
看楼主描述的状况,应该是外围IP配置的问题。 A(mirror) B(Principle)的状况可以顺利处理的话,建议楼主检测下DNS配置是否一致!

wapit 2009-12-23
  • 打赏
  • 举报
回复
数据库用户名,登录名等都已经配置好且没有问题. 实际中服务器A,B是用内网IP+端口(192.168.x.x,1433)方式表示的, 默认端口1433已经改成了其它端口.

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧