資料庫鏡像和資料庫快照集 (SQL Server)
適用於:SQL Server
您可以利用為了提供可用性而維護的鏡像資料庫卸載報表。 若要對報表使用鏡像資料庫,請在鏡像資料庫上建立資料庫快照集,然後將用戶端連接要求導向最近一次的快照集。 資料庫快照集是其來源資料庫的一個靜態、唯讀、交易一致的快照集,存在於快照集建立時。 若要在鏡像資料庫上建立資料庫快照集,資料庫必須處於同步處理的鏡像狀態。
不像鏡像資料庫,用戶端可以存取資料庫快照集。 只要鏡像伺服器仍與主體伺服器進行通訊,就可以將報表用戶端導向連接到快照集。 請注意,因為資料庫快照集是靜態的,所以不會有新的資料可用。 若要使較新的資料可供使用者使用,您必須定期建立新的資料庫快照集,並使應用程式與最新快照集之間有直接傳入用戶端的連接。
新的資料庫快照集幾乎是空的,但它會隨著時間成長,因為有愈來愈多資料庫頁面都是第一次更新。 由於資料庫上的每個快照集都會以這種方式累加成長,所以每個資料庫快照集會與一般資料庫取用同等的資源。 根據鏡像伺服器和主體伺服器的組態而定,如果鏡像資料庫上有太多資料庫快照集,可能就會降低主體資料庫的效能。 因此,我們建議您僅在鏡像資料庫上保留一些較新的快照集。 通常,在建立取代快照集之後,您應該將傳入的查詢重新導向至新的快照集,並在完成任何現行查詢之後卸除較早的快照集。
注意
如需資料庫快照集的詳細資訊,請參閱 資料庫快照集 (SQL Server)。
如果發生角色切換,會重新啟動資料庫及其快照集,並暫時中斷使用者。 然後,資料庫快照集會留在當初建立它們的伺服器執行個體上,該執行個體已變成新的主體資料庫。 使用者可在容錯移轉之後,繼續使用快照集。 不過,這會為新的主體伺服器帶來額外負荷。 如果效能是您環境中的一項考量,我們建議您在新的鏡像資料庫 (當它可用時) 建立快照集,再將用戶端重新導向至新的快照集,然後從先前的鏡像資料庫中卸除所有資料庫快照集。
注意
如需能有效擴充的專用報表解決方案,請考慮複寫。 如需詳細資訊,請參閱 SQL Server Replication。
範例
此範例會在鏡像資料庫上建立快照集。
假設資料庫鏡像工作階段的資料庫為 AdventureWorks2022
。 此範例會在 AdventureWorks
資料庫的鏡像副本上建立三個資料庫快照集,該資料庫位於 F
磁碟機上。 這些快照集名為 AdventureWorks_0600
、 AdventureWorks_1200
及 AdventureWorks_1800
,用以識別其大約的建立時間。
在
AdventureWorks2022
的鏡像上建立第一個資料庫快照集。CREATE DATABASE AdventureWorks_0600 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_0600.SNP') AS SNAPSHOT OF AdventureWorks2022
在
AdventureWorks2022
的鏡像上建立第二個資料庫快照集: 仍在使用AdventureWorks_0600
的使用者可以繼續使用。CREATE DATABASE AdventureWorks_1200 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1200.SNP') AS SNAPSHOT OF AdventureWorks2022
如此一來,可以利用程式將新用戶端連接導向最新的快照集。
在
AdventureWorks2022
鏡像上建立第三個快照集。 仍在使用AdventureWorks_0600
或AdventureWorks_1200
的使用者可以繼續使用。CREATE DATABASE AdventureWorks_1800 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1800.SNP') AS SNAPSHOT OF AdventureWorks2022
如此一來,可以利用程式將新用戶端連接導向最新的快照集。