如何在故障转移后连接到镜像SQL Server?
我建立一个数据库镜像,然后使用该connectionstring
连接到它:如何在故障转移后连接到镜像SQL Server?
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会做的工作对我来说。那么我现在该做什么?
这个问题很紧迫。非常感谢你的帮助。
幸运的是,我解决了这个问题。我只需要调用ClearPool方法:
SqlConnection.ClearPool(conn);
此方法将清除连接池。然后,问题消失了。我很高兴。
谢谢大家,支持你。 :D
是的 - 连接池可以导致这种类型的事情与群集和镜像 – onupdatecascade 2010-02-04 19:48:36
你如何确定何时清除池?你是否试图用try/catch打开conn,如果打开抛出异常呢?或者您是否发现了可能需要清除池的通知时可以挂钩的特定事件?此外,您可以在连接字符串中禁用连接池,但会影响性能,与在打开连接之前始终清除连接池相同。 – 2013-07-11 22:36:32
这是很久以前,我没有代码了,但如果我没有记错的话,我清除连接池的捕获异常。不是一个理想的解决方案,但它适用于我作为演示。 – Vimvq1987 2013-07-26 05:46:31
应指定是否有证人或如果这是一个手动故障转移配置(你只能得到,如果你有一个证人的自动故障转移。看到http://technet.microsoft.com/ EN-US /库/ ms189852(SQL.90)的.aspx)。您还应该检查Principal和Failover上的数据库状态。 – 2010-02-04 15:51:33
你在使用什么提供商? – gbn 2010-02-04 15:55:55
@doug_w:我通过T-SQL手工检查,一切正常:) @gbn:我正在使用ADO.NET – Vimvq1987 2010-02-04 15:58:42