語言

LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) 方法

定義

將對數的基序號往前移動。 無法繼承這個方法。

public:
 virtual void AdvanceBaseSequenceNumber(System::IO::Log::SequenceNumber newBaseSequenceNumber);
public void AdvanceBaseSequenceNumber(System.IO.Log.SequenceNumber newBaseSequenceNumber);
abstract member AdvanceBaseSequenceNumber : System.IO.Log.SequenceNumber -> unit
override this.AdvanceBaseSequenceNumber : System.IO.Log.SequenceNumber -> unit
Public Sub AdvanceBaseSequenceNumber (newBaseSequenceNumber As SequenceNumber)

參數

newBaseSequenceNumber
SequenceNumber

指定原木的新底座 SequenceNumber 。 這個數值必須位於目前基序號與對數最後序號之間的範圍。

實作

例外狀況

newBaseSequenceNumber 對於此序列不適用。

活躍日誌的新或現有的檔案尾部或基礎檔案均無效。

-或-

newBaseSequenceNumber 不介於該序列的基數與末一序列號之間。

由於意外的 I/O 異常,請求無法執行。

-或-

由於 I/O 裝置錯誤,請求無法執行。

指定的對數沒有任何區間。 在使用記錄序列之前,必須建立一個或多個區段。

該方法是在序列被處理後才被呼叫的。

記憶體不足以繼續執行程式。

作業系統會拒絕存取指定的日誌序列。

紀錄序列已滿。

範例

這個範例展示了如何利用 AdvanceBaseSequenceNumber 事件 TailPinned 的方法來釋放對數序列中的空間。

recordSequence.RetryAppend = true;
recordSequence.TailPinned += new EventHandler<TailPinnedEventArgs>(HandleTailPinned);

void HandleTailPinned(object sender, TailPinnedEventArgs tailPinnedEventArgs)
{
   // tailPinnedEventArgs.TargetSequenceNumber is the target
   // sequence number to free up space to.
   // However, this sequence number is not necessarily valid.  We have
   // to use this sequence number as a starting point for finding a
   // valid point within the log to advance toward. You need to
   // identify a record with a sequence number equal to, or greater
   // than TargetSequenceNumber; let's call this
   // realTargetSequenceNumber. Once found, move the base

   recordSequence.AdvanceBaseSequenceNumber(realTargetSequenceNumber);

}

備註

這種方法常 TailPinned 用於事件,以釋放記錄空間。 事件表示 TailPinned 序列的尾端(即基序號)需要向前移動以釋放空間。 釋放空間可以透過使用該 WriteRestartArea 方法寫入重新啟動區域,或截斷日誌並用該 AdvanceBaseSequenceNumber 方法將日誌的基序號推進到參數指定的 newBaseSequenceNumber 序列號來完成。 範例部分的程式碼範例展示了第二種方法。

請注意,呼叫此方法與使用該 WriteRestartArea 方法設定新的基序號相同,不同之處在於不會將重新啟動記錄寫入日誌。

適用於