none
SQL 2005 不会自动故障转存 RRS feed

  • 问题

  • 我建立了2个虚拟机

    虚拟机一建立了主服务器

    虚拟机二建立了镜像服务器及见证服务器

    分别在虚拟机上建立证书,交换证书,建立用户,分配权限等操作

    在镜像服务器执行

    alter database db set partner ="tcp://IP:port"

    在主服务器执行 

    alter database db set partner ="tcp://IP:port"

    alter database db set witness ="tcp://IP:port"

    以上所有操作均以成功.在主服务器上面的数据库查看镜像也能看到相关的镜像服务器跟见证服务器.

     

    当我将虚拟机一的网络断掉之后..

    虚拟机二上面的镜像服务器的状态一直是 (镜像/ 已断开)

     

    请问是什么地方没做好,

     

    --万分感谢你的回复--


    • 已编辑 一酷 2011年9月6日 9:41
    2011年9月6日 9:40

全部回复

  • Did you try failover in ssms -> db properties or with 'alter database db set partner failover'?
    2011年9月6日 13:22
  • Thank you for your help

     

    我重新两台虚拟机之后,一切都正常了。

     

    但是是在使用连接字符串的时候

     

    connectionString="Data Source =Master;failover partner=mirror;initial catalog=db; user id = sa ;password =pwd;"

     

    当Master服务器断线之后..镜像服务器状态变为(主体,已断开连接),

    在程序中偶尔能连接数据库服务器..很多时候还是无法连接数据库


    • 已编辑 一酷 2011年9月7日 2:38
    2011年9月7日 2:37
  • Is mirroring in high safety mode? Do you use connection pooling? Got any error?
    2011年9月7日 2:40
  • 运行模式是 带自动故障转移功能的高安全(同步) 应该就是你所说的high safety mode

     

    对 connection pooling 不了解..

    使用连接字符串是 "Data Source=192.168.0.165;Failover Partner=192.168.0.166;Initial Catalog=DB;User ID=sa;Password=pwd"

    此时是如何利用 connection pooling的

    192.168.0.165是断网状态 192.168.0.166的状态是(主体,已断开连接)

    error:

    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)

     

    把连接字符串改为"Data Source=192.168.0.166;Initial Catalog=DB;User ID=sa;Password=pwd" 运行正常

     

     


    • 已编辑 一酷 2011年9月7日 4:48
    2011年9月7日 4:39
  • 网络都好的时候,在primary和mirror运行下面的语句,看看下面的3列内容,确保witness工作正常。

    select * from sys.database_mirroring

    -- mirroring_state = 4 (synchronized)
    -- mirroring_role = 1 (principal) or 2 (mirror)
    -- mirroring_witness_state = 1 (connected)

    另外,从你的现象来看,怀疑是虚拟机TCP因为断网短时间出问题。你先手动failover看看是否正常;然后在primary上,把sqlservr.exe进程kill掉,看看自动failover是否还有问题。

     

    2011年9月7日 8:23
  • 运行模式是 带自动故障转移功能的高安全(同步) 应该就是你所说的high safety mode

     

    对 connection pooling 不了解..

    使用连接字符串是 "Data Source=192.168.0.165;Failover Partner=192.168.0.166;Initial Catalog=DB;User ID=sa;Password=pwd"

    此时是如何利用 connection pooling的

    192.168.0.165是断网状态 192.168.0.166的状态是(主体,已断开连接)

    error:

    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)

     

    把连接字符串改为"Data Source=192.168.0.166;Initial Catalog=DB;User ID=sa;Password=pwd" 运行正常

     

     


     

    What kind of provider do you have on client? Need .net version 2 at least to make it work

    • 已标记为答案 一酷 2011年9月8日 1:22
    • 取消答案标记 一酷 2011年9月8日 1:22
    2011年9月7日 13:14
  • 使用 ado.net进行的连接。
    2011年9月8日 1:22
  • Is it version 2 and up?
    2011年9月8日 1:30
  • 请提供更详细的信息给我们,好吗?
    it's time to start living the life you are imagined.
    2011年9月13日 5:45