過時容錯移轉夥伴名稱的影響
資料庫管理員可隨時變更容錯移轉夥伴。因此,用戶端提供的容錯移轉夥伴名稱可能會過期或「過時」。例如,考慮由另一個伺服器執行個體 Partner_C 取代的容錯移轉夥伴 Partner_B。若用戶端接著提供 Partner_B 做為容錯移轉夥伴名稱,該名稱就會過時。當用戶端提供過時的容錯移轉夥伴名稱時,資料存取提供者的行為跟用戶端未提供容錯移轉夥伴名稱時一樣。
例如,假設用戶端使用同一個連接字串連續進行四次連接嘗試。在連接字串中,初始夥伴名稱是 Partner_A,而容錯移轉夥伴名稱是 Partner_B:
"Server=Partner_A; Failover Partner=Partner_B; Database=AdventureWorks2008R2"
下表顯示四個夥伴組態,並指出對於每一個組態來說,此連接字串第一次是否可連接用戶端。
[!附註]
應用程式可以追蹤組態變更,並據以變更其連接字串。雖然這會需要額外程式碼,不過可減輕管理負擔。
組態 |
主體伺服器 |
鏡像伺服器 |
嘗試指定 Partner_A 和 Partner_B 來連接的行為 |
---|---|---|---|
原始的鏡像組態。 |
Partner_A |
Partner_B |
已快取 Partner_A 作為初始夥伴名稱。用戶端成功連接到 Partner_A。用戶端下載鏡像伺服器名稱 Partner_B 並放入快取中,略過用戶端提供的容錯移轉夥伴名稱。 |
Partner_A 遇到硬體失敗,而且發生容錯移轉 (中斷用戶端連接)。 |
Partner_B |
none |
仍然將 Partner_A 快取為初始夥伴名稱,但用戶端提供的容錯移轉夥伴名稱 Partner_B,允許用戶端連接到目前的主體伺服器。 |
資料庫管理員停止鏡像功能 (中斷用戶端連接),以 Partner_C 取代 Partner_A 後,重新啟動鏡像功能。 |
Partner_B |
Partner_C |
用戶端嘗試連接到 Partner_A 但失敗;接著用戶端嘗試連接 Partner_B (目前的主體伺服器),結果成功。資料存取提供者下載目前的鏡像伺服器名稱 Partner_C,並快取為目前的容錯移轉夥伴名稱。 |
手動將服務容錯移轉至 Partner_C (中斷用戶端連接)。 |
Partner_C |
Partner_B |
用戶端一開始嘗試連接到 Partner_A,然後嘗試連接到 Partner_B。兩個名稱都會失敗,最後連接要求會逾時並失敗。 |