備註
這項功能將在未來的 SQL Server Microsoft 版本中移除。 請避免在新的開發工作中使用此功能,並計劃修改目前使用此功能的應用程式。 請改用 Always On 可用性群組。
SQL Server 2005 中引進的資料庫鏡像是增加資料庫可用性和數據備援的解決方案。 SQL Server Native Client 提供資料庫鏡像的隱含支援,因此開發人員不需要撰寫任何程式碼,或在針對資料庫設定後採取任何其他動作。
資料庫鏡像是以每個資料庫為基礎實作,它會在待命伺服器上保留 SQL Server 生產資料庫的複本。 此伺服器是經常性或暖待命伺服器,視資料庫鏡像會話的組態和狀態而定。 熱待命伺服器支援快速故障轉移,且不會遺失認可的交易,而暖待命伺服器支持強制服務(可能遺失數據)。
生產資料庫稱為 主體資料庫,而待命複本稱為 鏡像資料庫。 主體資料庫和鏡像資料庫必須位於 SQL Server(伺服器實例)的個別實例上,而且如果可能的話,它們應該位於不同的電腦上。
稱為 主體伺服器的生產伺服器實例會與待命伺服器實例通訊,稱為 鏡像伺服器。 主體和鏡像伺服器會作為資料庫鏡像 會話內的夥伴。 如果主體伺服器失敗,鏡像伺服器可以透過稱為 故障轉移的程式,將其資料庫變成主體資料庫。 例如,Partner_A和Partner_B是兩個夥伴伺服器,主體資料庫一開始位於Partner_A做為主體伺服器,而鏡像資料庫則位於Partner_B做為鏡像伺服器。 如果Partner_A離線,Partner_B上的資料庫可以故障轉移成目前的主體資料庫。 當Partner_A重新加入鏡像會話時,它就會成為鏡像伺服器,而其資料庫會變成鏡像資料庫。
替代資料庫鏡像組態提供不同層級的效能和數據安全性,並支援不同類型的故障轉移。 如需詳細資訊,請參閱資料庫鏡像 (SQL Server)。
指定鏡像資料庫名稱時,可以使用別名。
備註
如需初始連線嘗試與鏡像資料庫重新連線嘗試的相關信息,請參閱 將用戶端連線到資料庫鏡像會話 (SQL Server) 。
程序設計考慮
當主體資料庫伺服器失敗時,用戶端應用程式會收到回應 API 呼叫的錯誤,這表示資料庫連線已遺失。 發生這種情況時,資料庫的任何未認可變更都會遺失,而且會回復目前的交易。 如果發生這種情況,應用程式應該關閉連接(或釋放數據源物件),然後重新開啟它。 聯機會以透明方式重新導向至鏡像資料庫,而鏡像資料庫現在會作為主體伺服器。
建立連接時,主體伺服器會將其容錯移轉夥伴的識別傳送到容錯移轉發生時所使用的用戶端。 當應用程式在主體伺服器失敗后嘗試建立連線時,用戶端不知道故障轉移夥伴的身分識別。 為了讓客戶端有機會應付此案例,初始化屬性和相關聯的連接字串關鍵詞可讓用戶端自行指定故障轉移夥伴的身分識別。 用戶端屬性只會在此案例中使用;如果主體伺服器可用,則不會使用。 如果用戶端提供的故障轉移夥伴伺服器未參考做為故障轉移夥伴的伺服器,伺服器就會拒絕連線。 若要讓應用程式適應組態變更,您可以在建立連線之後檢查 屬性,以判斷實際故障轉移夥伴的身分識別。 您應該考慮快取夥伴資訊來更新連接字串,或在第一次嘗試建立連線失敗時設計重試策略。
備註
如果您想要在 DSN、連接字串或連接屬性/ 屬性中使用此功能,您必須明確指定連接要使用的資料庫。 如果未這麼做,SQL Server Native Client 將不會嘗試故障轉移至夥伴資料庫。
鏡像是資料庫的一項功能。 使用多個資料庫的應用程式可能無法利用此功能。
此外,伺服器名稱不區分大小寫,但資料庫名稱會區分大小寫。 因此,您應該確認您在 DSN 和連接字串中使用相同的大小寫。
SQL Server Native Client OLE DB 提供者
SQL Server Native Client OLE DB 提供者支援透過連線和連接字串屬性進行資料庫鏡像。 SSPROP_INIT_FAILOVERPARTNER屬性已新增至DBPROPSET_SQLSERVERDBINIT屬性集,而 FailoverPartner 關鍵詞是DBPROP_INIT_PROVIDERSTRING的新連接字串屬性。 如需詳細資訊,請參閱 搭配 SQL Server Native Client 使用連接字串關鍵詞。
只要載入提供者,就會維護故障轉移快取,直到呼叫 CoUninitialize ,或只要應用程式有 SQL Server Native Client OLE DB 提供者所管理之某些對象的參考,例如數據源物件為止。
如需資料庫鏡像之 SQL Server Native Client OLE DB 提供者支援的詳細資訊,請參閱 初始化和授權屬性。
SQL Server Native Client ODBC Driver
SQL Server Native Client ODBC 驅動程式支援透過連線和連接字串屬性進行資料庫鏡像。 具體來說,已新增SQL_COPT_SS_FAILOVER_PARTNER屬性,以便與 SQLSetConnectAttr 和 SQLGetConnectAttr 函式搭配使用; Failover_Partner 和 關鍵詞已新增為新的連接字串屬性。
只要應用程式至少有一個已配置的環境句柄,故障轉移快取即會維持。 相反地,當最後一個環境句柄解除分配時,它就會遺失。
備註
ODBC 驅動程式管理員已增強,以支援故障轉移伺服器名稱的規格。
另請參閱
SQL Server Native Client 功能
將用戶端連線到資料庫鏡像工作階段 (SQL Server)
資料庫鏡像 (SQL Server)