共用方式為


復原到日誌序列號 (在 SQL Server 中)

本主題僅適用於使用完整或大容量日誌恢復模式的資料庫。

您可以使用記錄序號 (LSN) 來定義還原作業的恢復點。 不過,這是一項特製化功能,適用於工具廠商,而且不太可能一般有用。

記錄序號概觀

LSN 會在 RESTORE 序列期間於內部使用,以追蹤數據已還原的時間點。 還原備份時,數據會還原至對應到備份建立時間點的 LSN。 差異備份和記錄備份會將還原的資料庫推進到更晚的時間點,對應於較高的 LSN(記錄序列號)。

事務歷史記錄中的每個記錄都會以記錄序號 (LSN) 唯一識別。 LSN 的排序方式是,如果 LSN2 大於 LSN1,則 LSN2 所參考的記錄檔記錄所描述的變更發生在記錄檔記錄 LSN 所描述的變更之後。

記錄檔中某條記錄的 LSN,其上發生重大事件,可有助於建構正確的還原順序。 因為 LSN 是排序的,所以可以進行等號和不等號比較(也就是<>=<=>=)。 建構還原順序時,這類比較很有用。

備註

LSN 是數據類型 numeric的值(25,0)。 算術運算(例如加法或減法)沒有意義,不得與 LSN 搭配使用。

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

在特定的備份和還原事件中發生的日誌記錄 LSN 可以透過以下一個或多個項目檢視:

備註

LSN 也會出現在某些消息正文中。

Transact-SQL 還原至 LSN 的語法

藉由使用 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  

相關工作

另請參閱

套用交易記錄備份 (SQL Server)
交易記錄 (SQL Server)
RESTORE (Transact-SQL)