儘管未指定故障轉移夥伴,但 TFS 安裝故障轉移到鏡像輔助
我們在伺服器(伺服器 A)上安裝了 TFS 版本 15.105.27412.0,並將其配置為指向我們的數據庫伺服器(伺服器 B)。
我們有兩個 TFS 數據庫 (
tfs_defaultcollection
和tfs_configuration
)ServerB
,它們被鏡像ServerC
,但是 TFS 配置管理器中的連接字元串不是“鏡像感知” - 請參見下面的 TFS 管理控制台螢幕截圖此外,如果我如下查詢 TFS 配置數據庫
SELECT * FROM Tfs_configuration.dbo.tbl_Database
這確認了兩個數據庫的連接字元串都沒有指定故障轉移夥伴。
今天早上我們有一個計劃的故障轉移
ServerB
,ServerC
其中包括兩個TFS
數據庫,令所有人驚訝的是,它TFS
繼續與數據庫一起failover
執行並在ServerC
.我停止了 SQL Server 服務
ServerB
並執行了一個ExtendedEvents
會話ServerC
(查找訪問TFS
數據庫的查詢),並且可以確認TFS
應用程序確實在查詢ServerC
。這怎麼發生的?TFS 安裝不知道
ServerC
存在,是在 SQL Server 級別發生了什麼嗎?
在連接字元串中指定故障轉移夥伴僅用於初始連接。連接後,客戶端會收到故障轉移夥伴的通知,並將在發生故障轉移時使用它重新連接。
$$ After connecting to the principal $$數據訪問提供者下載目前鏡像伺服器的伺服器實例名稱。此名稱作為故障轉移夥伴名稱儲存在記憶體中,覆蓋客戶端提供的故障轉移夥伴名稱(如果有)。
因此,即使沒有專門為數據庫鏡像配置的應用程序也會在啟動時發現故障轉移夥伴。
我們的 TFS 安裝沒有指定故障轉移夥伴
因此,如果在其連接字元串中指定的伺服器不可用並且託管主體數據庫,則在重新啟動或冷啟動時,TFS 將無法連接。但是,如果在 TFS 成功連接到主體後發生故障轉移,它將知道重新連接到故障轉移夥伴。