資料庫鏡像和資料庫快照集 (SQL Server)

適用於:SQL Server

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

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

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

注意

如需資料庫快照集的詳細資訊,請參閱 資料庫快照集 (SQL Server)

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

注意

如需能有效擴充的專用報表解決方案,請考慮複寫。 如需詳細資訊,請參閱 SQL Server Replication

範例

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

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

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

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

    CREATE DATABASE AdventureWorks_1200  
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1200.SNP')  
       AS SNAPSHOT OF AdventureWorks2022  
    

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

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

    CREATE DATABASE AdventureWorks_1800  
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1800.SNP')  
        AS SNAPSHOT OF AdventureWorks2022  
    

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

相關工作

另請參閱

資料庫快照集 (SQL Server)
將用戶端連接至資料庫鏡像工作階段 (SQL Server)