相信大家都知道Connection String可以設定Failover Partner在有Mirroring的環境上。當主體伺服器發生問題時,能夠Failover連線到另外一台鏡像伺服器。
但是大家對於鏡像環境建立Connection String的Failover Partner Parameter通常都有不太清楚的理解。
理論上來說,當成功連接Principle SQL Server,data access provider 會向目前已連線的SQL Server下載Failover Partner在Client端並Cache,之後,.NET Framework Data Provider for SQL Server 就不會更新Failover Partner。 然而,假設Principle SQL Server突然掛了,Client連線不到Principle SQL Server,後續則會透過Connection String中的Failover Partner Parameter連接SQL Server,假如此時和Failover Partner Parameter中的SQL Server連線順利建立,SQL Server則會傳遞【新】的Failover Partner給Client端並Cache。
所以其實有兩種情況
- 當連線順利建立,data access provider 會向目前已連線的SQL Server下載Failover Partner
- 若第一次連線無法建立成功,則 data access provider tries透過Connection String中的Failover Partner Parameter試著連線,若是連線成功,則會向目前已連線的SQL Server下載Failover Partner