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