故障转移后如何连接到镜像SQL Server?

时间:2010-02-04 15:13:21

标签: sql-server ado.net connection-string failover high-availability

我设置了数据库镜像,然后使用此connectionstring连接到它:

    Data Source={0};Failover Partner={1};Initial Catalog=AdventureWorks;
    Integrated Security=True;

将一些数据添加到数据库后,我关闭了主服务器,因此镜像服务器成为主服务器。我再次打开连接,得到这个错误:

    System.Data.SqlClient.SqlException: A transport-level error has 
occurred when sending the request to the server. (provider: Shared Memory 
Provider, error: 0 - No process is on the other end of the pipe.)

我认为通过连接字符串中指定的故障转移合作伙伴,ADO.NET将为我完成工作。那我现在该怎么办?

这个问题很紧迫。非常感谢你的帮助。

4 个答案:

答案 0 :(得分:3)

幸运的是,我解决了这个问题。我需要做的就是调用ClearPool方法:

SqlConnection.ClearPool(conn);

此方法将清除连接池。然后,问题就消失了。我很高兴。

谢谢大家的支持。 :d

答案 1 :(得分:2)

我不是.net的专家,但你需要SQL本机客户端(SQLNCLI)来处理故障转移。 “ado.net”可能是SQLOLEDB

至少Windows Server 2003至少没有默认安装。它可以是独立的,也可以是SQL客户端工具的一部分,所以我怀疑你使用的是SQLOLEDB

答案 2 :(得分:0)

关闭主体后,您是否确认故障转移实际上成为主体?如果它在Sql Server上没有自动故障转移,那么镜像仍然是镜像。

答案 3 :(得分:0)

我们发现,如果没有足够大的超时设置,就会发生这种情况。

https://serverfault.com/questions/249589/db-auto-failover-in-c-does-not-work-when-the-principal-server-physically-goes-o