共用方式為


復原到記錄序號 (SQL Server)

本主題僅與使用完整或大量記錄復原模式的資料庫相關。

您可使用記錄序號 (LSN) 定義還原作業的復原點。 但是,這是為工具供應商所提供的特定功能,未必普遍適用。

記錄序號概觀

執行 RESTORE 順序期間,在內部會使用 LSN 追蹤已還原之資料的時間點。 還原備份時,資料會還原到備份執行時間點所對應的 LSN; 差異與記錄備份則可將已還原的資料庫推往更後面的時間點,因為它們對應到較高的 LSN。

交易記錄中的每一筆記錄都由記錄序號 (LSN) 加以唯一識別。 LSN 是經過排序的,因此如果 LSN2 大於 LSN1,表示 LSN2 所參考記錄中描述的變更,發生在記錄 LSN1 所描述的變更之後。

發生重大事件時的記錄 LSN,有助於建構正確的還原順序。 因為 LSN 經過排序,所以可以進行相等和不等比較 (亦即 <>=<=>=)。 要建構還原順序時,這種比較很有用。

[!附註]

LSN 是資料類型 numeric(25,0) 的值。 數學運算 (例如:加、減) 在此沒有意義,且絕不能搭配 LSN 使用。

[回到頁首]

檢視備份與還原所使用的 LSN

特定備份與還原事件發生時的記錄 LSN,可透過下列一種或多種方式進行檢視:

[!附註]

LSN 也會出現在某些訊息文字中。

還原至 LSN 所用的 Transact-SQL 語法

使用 RESTORE 陳述式,可以在 LSN 上或剛好就在它之前停止,如下所述:

  • 使用 WITH STOPATMARK = 'lsn:<lsn_number>' 子句,其中 lsn:<lsnNumber> 字串會指定包含所指定之 LSN 的記錄做為復原點。

    STOPATMARK 會向前復原到 LSN,並且將該筆記錄納入向前復原中。

  • 使用 WITH STOPBEFOREMARK = 'lsn:<lsn_number>' 子句,其中 lsn:<lsnNumber> 這個字串會指定緊接在包含指定之 LSN 號碼的記錄之前的記錄為復原點。

    STOPBEFOREMARK 會向前復原到 LSN,並且從向前復原中排除該筆記錄。

通常會選取要納入或排除的特定交易。 實際上雖不需要這麼做,但指定的記錄是交易認可記錄。

範例

下列範例假設 AdventureWorks 資料庫已變更為使用完整復原模式。

RESTORE LOG AdventureWorks FROM DISK = 'c:\adventureworks_log.bak' 
WITH STOPATMARK = 'lsn:15000000040000037'
GO

相關工作

請參閱

參考

RESTORE (Transact-SQL)

概念

套用異動記錄備份 (SQL Server)

交易記錄 (SQL Server)