在 SQL Server 2012 中複製還原數據庫
我有兩個 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