使用資料庫鏡像
適用於:SQL Server
注意
SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 Always On 可用性群組。
在 SQL Server 2005 (9.x) 中導入的資料庫鏡像是一套增加資料庫可用性與資料冗餘的解決方案。 OLE DB Driver for SQL Server 會提供對資料庫鏡像的隱含支援,因此在將其針對資料庫設定後,開發人員就不需要撰寫任何程式碼或採取其他任何動作。
資料庫鏡像是根據每個資料庫來實作,會在待命伺服器上保留 SQL Server 生產環境資料庫的複本。 此伺服器為熱或暖待命伺服器,端視資料庫鏡像工作階段的組態和狀態而定。 熱待命伺服器支援不會遺失任何已認可交易的快速容錯移轉,而暖待命伺服器支援強制服務 (資料可能會遺失)。
生產資料庫稱為「主體資料庫」,而待命副本則稱為「鏡像資料庫」。 主體資料庫和鏡像資料庫必須位於個別的 SQL Server 執行個體 (伺服器執行個體) 上,如有可能,也應該位於個別的電腦上。
稱為「主體伺服器」的實際執行伺服器執行個體會與稱為「鏡像伺服器」的待命伺服器執行個體進行通訊。 主體伺服器和鏡像伺服器會在資料庫鏡像「工作階段」內當做夥伴運作。 如果主體伺服器失敗,則鏡像伺服器可以透過稱為「容錯移轉」的處理序,使鏡像伺服器的資料庫成為主體資料庫。 例如,Partner_A 與 Partner_B 是兩個夥伴伺服器,其中主體資料庫一開始位於 Partner_A 上做為主體伺服器,而鏡像資料庫位於 Partner_B 上做為鏡像伺服器。 如果 Partner_A 離線,Partner_B 上的資料庫可以容錯移轉,變成目前的主體資料庫。 當 Partner_A 重新加入鏡像工作階段時,它會變成鏡像伺服器而其資料庫會變成鏡像資料庫。
替代的資料庫鏡像組態提供不同層次的效能及資料安全,並支援不同形式的容錯移轉。 如需詳細資訊,請參閱資料庫鏡像 (SQL Server)。
指定鏡像資料庫名稱時,可以使用別名。
注意
如需有關鏡像資料庫之初始連線嘗試與重新連線嘗試的詳細資訊,請參閱將用戶端連線至資料庫鏡像工作階段 (SQL Server)。
程式設計考量
當主體資料庫伺服器失敗時,用戶端應用程式會在回應 API 呼叫時收到錯誤,這表示與資料庫的連接已經中斷。 發生這個情況時,對於資料庫的任何未認可變更都會遺失,而且目前的交易會回復。 如果發生這個情況,應用程式應該關閉連接 (或釋出資料來源物件) 然後再重新開啟它。 此連接會以透明的方式重新導向鏡像資料庫,現在當做主體伺服器使用。
建立連接時,主體伺服器會將其容錯移轉夥伴的識別傳送到容錯移轉發生時所使用的用戶端。 在應用程式嘗試在主體伺服器失敗後建立連接的情況下,用戶端不會知道容錯移轉夥伴的識別。 為了讓用戶端有機會處理此狀況,初始化屬性和相關聯的連接字串關鍵字可讓用戶端自行指定容錯移轉夥伴的識別。 只有在有可用的主體伺服器,但未使用時,才會在此狀況中使用用戶端屬性。 如果用戶端提供的容錯移轉夥伴伺服器指的不是當做容錯移轉夥伴的伺服器,伺服器就會拒絕連接。 若要讓應用程式符合組態變更,實際容錯移轉夥伴的識別可以透過檢查建立連接後的屬性來判斷。 如果第一次建立連接的嘗試失敗,您應該考慮快取處理夥伴資訊來更新連接字串或想出重試策略。
注意
如果您要在 DSN、連接字串或連接屬性 (Property)/屬性 (Attribute) 中使用此功能,您必須明確指定連接所使用的資料庫。 如果未完成此動作,OLE DB Driver for SQL Server 將不會嘗試容錯移轉到夥伴資料庫。
鏡像是資料庫的一個功能。 使用多個資料庫的應用程式可能無法使用此功能。
此外,伺服器名稱不區分大小寫,但是資料庫名稱會區分大小寫。 因此,您應該確認您在 DSN 和連接字串中使用相同的大小寫。
OLE DB Driver for SQL Server
OLE DB Driver for SQL Server 透過連接和連接字串屬性支援資料庫鏡像。 SSPROP_INIT_FAILOVERPARTNER 屬性已加入到 DBPROPSET_SQLSERVERDBINIT 屬性集,而 FailoverPartner 關鍵字是 DBPROP_INIT_PROVIDERSTRING 的新連接字串屬性。 如需詳細資訊,請參閱搭配 OLE DB Driver for SQL Server 使用連接字串關鍵字。
只要載入提供者,就可以維持容錯移轉快取,直到呼叫 CoUninitialize 為止,或只要應用程式擁有 OLE DB Driver for SQL Server 所管理之特定物件的參考即可,例如資料來源物件。
如需有關 OLE DB Driver for SQL Server 對資料庫鏡像之支援的詳細資訊,請參閱初始化和授權屬性。
另請參閱
OLE DB Driver for SQL Server 功能
將用戶端連接至資料庫鏡像工作階段 (SQL Server)
資料庫鏡像 (SQL Server)