我设置了数据库镜像,然后使用此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将为我完成工作。那我现在该怎么办?
这个问题很紧迫。非常感谢你的帮助。
答案 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)