資料庫鏡像和資料庫快照集

您可以利用為了提供可用性而維護的鏡像資料庫卸載報表。若要對報表使用鏡像資料庫,請在鏡像資料庫上建立資料庫快照集,然後將用戶端連接要求導向最近一次的快照集。資料庫快照集是其來源資料庫的一個靜態、唯讀、交易一致的快照集,存在於快照集建立時。若要在鏡像資料庫上建立資料庫快照集,資料庫必須處於同步處理的鏡像狀態。

不像鏡像資料庫,用戶端可以存取資料庫快照集。只要鏡像伺服器仍與主體伺服器進行通訊,就可以將報表用戶端導向連接到快照集。請注意,因為資料庫快照集是靜態的,所以不會有新的資料可用。若要使較新的資料可供使用者使用,您必須定期建立新的資料庫快照集,並使應用程式與最新快照集之間有直接傳入用戶端的連接。

新的資料庫快照集幾乎是空的,但它會隨著時間成長,因為有愈來愈多資料庫頁面都是第一次更新。由於資料庫上的每個快照集都會以這種方式累加成長,所以每個資料庫快照集會與一般資料庫取用同等的資源。根據鏡像伺服器和主體伺服器的組態而定,如果鏡像資料庫上有太多資料庫快照集,可能就會降低主體資料庫的效能。因此,我們建議您僅在鏡像資料庫上保留一些較新的快照集。通常,在建立取代快照集之後,您應該將傳入的查詢重新導向至新的快照集,並在完成任何現行查詢之後卸除較早的快照集。

[!附註]

如需有關資料庫快照集的詳細資訊,請參閱<資料庫快照集>。

如果發生角色切換,會重新啟動資料庫及其快照集,並暫時中斷使用者。然後,資料庫快照集會留在當初建立它們的伺服器執行個體上,該執行個體已變成新的主體資料庫。使用者可在容錯移轉之後,繼續使用快照集。不過,這會為新的主體伺服器帶來額外負荷。如果效能是您環境中的一項考量,我們建議您在新的鏡像資料庫 (當它可用時) 建立快照集,再將用戶端重新導向至新的快照集,然後從先前的鏡像資料庫中卸除所有資料庫快照集。

[!附註]

如需能有效擴充的專用報表解決方案,請考慮複寫。如需詳細資訊,請參閱<資料倉儲和報告>。

範例

此範例會在鏡像資料庫上建立快照集。

假設資料庫鏡像工作階段的資料庫為 AdventureWorks2008R2。此範例會在 AdventureWorks2008R2 資料庫的鏡像副本上建立三個資料庫快照集,該資料庫位於 F 磁碟機上。這些快照集名為 AdventureWorks2008R2_0600、AdventureWorks2008R2_1200 及 AdventureWorks2008R2_1800,用以識別其大約的建立時間。

  1. 在 AdventureWorks2008R2 的鏡像上建立第一個資料庫快照集。

    CREATE DATABASE AdventureWorks2008R2_0600
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks2008R2_0600.SNP')
       AS SNAPSHOT OF AdventureWorks2008R2;
    
  2. 在 AdventureWorks2008R2 的鏡像上建立第二個資料庫快照集:仍在使用 AdventureWorks2008R2_0600 的使用者可以繼續使用。

    CREATE DATABASE AdventureWorks2008R2_1200
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWork2008R2s_1200.SNP')
       AS SNAPSHOT OF AdventureWorks2008R2;
    

    如此一來,可以利用程式將新用戶端連接導向最新的快照集。

  3. 在 AdventureWorks2008R2 鏡像上建立第三個快照集。仍在使用 AdventureWorks2008R2_0600 或 AdventureWorks2008R2_1200 的使用者可以繼續使用。

    CREATE DATABASE AdventureWorks2008R2_1800
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks2008R2_1800.SNP')
        AS SNAPSHOT OF AdventureWorks2008R2;
    

    如此一來,可以利用程式將新用戶端連接導向最新的快照集。