Sql-Server

在 SQL Server 2012 中複製還原數據庫

  • December 27, 2013

我有兩個 SQL Server,其中一個伺服器(伺服器 A)正在備份某個數據庫上的事務日誌並將它們上傳到另一個(伺服器 B)。不幸的是,我無法訪問伺服器 A,我只需要相信它正在執行定期將其事務日誌上傳到伺服器 B 的工作(通過 FTP 之類的東西)。

現在,假設伺服器 B 需要恢復數據庫以進行一些讀寫。這樣做會破壞其接收更多事務日誌備份的能力。

有什麼方法可以複製/分支/備份恢復數據庫,所以我可以擁有一個可以繼續應用事務日誌的版本,以及一個可以恢復讀取/寫入的版本?

如果您想要 (1) 維護您的日誌傳送環境*,並且*(2) 想要偶爾擁有一個讀/寫副本,您將需要維護 2 個數據庫,TargetDB 和 Target2DB。

問題,您能否將備份從伺服器 A SourceDB 恢復到伺服器 B Target2DB?這可能需要更長的時間,但始終執行的移動元件更少。

如果只讀/只讀訪問就足夠了,您可以創建一個數據庫快照用於讀取目的。這將創建數據庫的時間點快照,由 .SNP 文件支持,該文件維護支持快照所需的數據,儘管有其他更改。

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

注意:如果需要,您可以在不同時間點創建多個快照。在這種情況下,請為其創建時間命名快照。例如 TargetDB_0800。)請參閱: http ://technet.microsoft.com/en-us/library/ms175876.aspx

當然,如果您將 Target2DB 聯機以進行讀/寫,一旦完成,您將需要將 SourceDB 的完整備份恢復為新的 Target2DB,然後通過恢復差異和日誌備份來趕上更改,直到您完成一次再次準備好進行日誌傳送。

如果要將伺服器 A 上的新事務日誌恢復到它,則無法寫入伺服器 B 上的數據庫。但是,可以將事務日誌以備用/只讀方式恢復到伺服器 B 上的數據庫。然後你可以從恢復的數據庫中讀取。

範例如何恢復事務日誌並將數據庫設置為備用只讀模式:

RESTORE LOG [Test2] FROM  DISK = N'C:\MssqlDatabases_2012\Backup\Test1latest.bak' WITH  FILE = 1,  
STANDBY = N'C:\MssqlDatabases_2012\Backup\Test1_RollbackUndo_2013-12-27_16-42-05.bak',  NOUNLOAD,  STATS = 5

引用自:https://dba.stackexchange.com/questions/55684