復原到標示的交易
這個主題僅與包含標示的交易,且使用完整模式或大量記錄復原模式的資料庫有關。
如需有關還原至特定復原點之需求的詳細資訊,請參閱<將資料庫還原到備份中的時間點>。
SQL Server 支援將具名標示插入交易記錄,以允許復原至特定的標示。記錄標示是針對交易而設,並且只有在其相關的交易認可時才會插入。如此一來,標示可以結合特定工作,您也就可以復原至包含或排除此工作的某一點。
將具名標示插入交易記錄之前,請考慮以下幾點:
因為交易標示須耗用記錄空間,所以除非它們在資料庫復原策略中扮演重要的角色,否則不應使用交易標示。
標示的交易認可之後,會在 msdb 的 logmarkhistory 資料表中插入一個資料列。
如果標示交易跨越同一資料庫伺服器或不同伺服器上的多個資料庫,則標示會記錄在所有受影響的資料庫之記錄中。如需詳細資訊,請參閱<使用標示的交易 (完整復原模式)>。
[!附註]
如需有關如何標示交易的詳細資訊,請參閱<使用標示的交易 (完整復原模式)>。
將具名標示插入交易記錄檔中的 Transact-SQL 語法
若要將標示插入交易記錄,請使用 BEGIN TRANSACTION 陳述式和 WITH MARK [description] 子句。標示和交易的名稱相同。選擇性的 <description> 是標示的文字說明,而不是標示名稱。例如,在下列 BEGIN TRANSACTION 陳述式中建立的交易及標示名稱為 Tx1:
BEGIN TRANSACTION Tx1 WITH MARK 'not the mark name, just a description'
交易記錄檔中會記錄標示名稱 (交易名稱)、描述、資料庫、使用者、datetime 資訊與記錄序號 (LSN)。datetime 資訊要與標示名稱一起使用,才能唯一識別標示。
如需有關如何將標示插入跨越多個資料庫的交易的詳細資訊,請參閱<使用標示的交易 (完整復原模式)>。
復原標示的 Transact-SQL 語法
針對標示的交易使用 RESTORE LOG 陳述式時,您可以使用下列其中一個子句,以在標示上或標示當前停止:
使用 WITH STOPATMARK = '<mark_name>' 子句,以指定標示的交易為復原點。
STOPATMARK 可向前復原標示,並將已標示的交易納入向前復原。
使用 WITH STOPBEFOREMARK = '<mark_name>' 子句,以指定標示之前的記錄為復原點。
STOPBEFOREMARK 可向前復原標示,並從向前復原中排除已標示的交易。
STOPATMARK 與 STOPBEFOREMARK 選項都支援選擇性的 AFTER datetime 子句。使用 datetime 時,標示名稱不必是唯一的。
若省略 AFTER datetime,向前復原會停在具有指定名稱的第一個標示。若指定 AFTER datetime,向前復原會在 datetime 上或之後,停止於具有指定名稱的第一個標示。
[!附註]
如同所有的時間點還原作業,當資料庫進行大量記錄的作業時,不允許其復原至標示。
若要還原標示的交易
如何:還原資料庫至標示的交易 (SQL Server Management Studio)
準備記錄備份
就此範例而言,這些相關資料庫的適當備份策略如下:
兩個資料庫均使用完整復原模式。
建立每一個資料庫的完整備份。
可循序或同時備份這些資料庫。
在備份交易記錄之前,先標示要在所有資料庫中執行的交易。如需有關如何建立標示的交易的詳細資訊,請參閱<使用標示的交易 (完整復原模式)>。
備份每個資料庫的交易記錄。
將資料庫復原至標示的交易
若要還原備份
盡可能建立未受損資料庫的結尾記錄備份。
還原每個資料庫的最新完整資料庫備份。
識別所有交易記錄備份中可用的最新標示交易。此資訊是儲存在每一個伺服器上 msdb 資料庫的 logmarkhistory 資料表中。
識別所有包含此標示之相關資料庫的記錄備份。
還原每個記錄檔備份,停在標示的交易。
復原每個資料庫。