本主題僅適用於使用完整或大容量日誌恢復模式的資料庫。
您可以使用記錄序號 (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)