復原包含標記之異動的相關資料庫
這個主題僅與包含標示的交易,且使用完整模式或大量記錄復原模式的資料庫有關。
如需還原至特定復原點之需求的相關資訊,請參閱將 SQL Server 資料庫還原至某個時間點 (完整復原模式)。
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 資料表中。
識別所有包含此標示之相關資料庫的記錄備份。
還原每個記錄檔備份,停在標示的交易。
復原每個資料庫。
另請參閱
BEGIN TRANSACTION (Transact-SQL)
RESTORE (Transact-SQL)
套用交易記錄備份 (SQL Server)
使用標示的交易以一致的方式復原相關資料庫 (完整復原模式)
還原和復原概觀 (SQL Server)
將 SQL Server 資料庫還原至某個時間點 (完整復原模式)
規劃和執行還原順序 (完整復原模式)