LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ログの基本シーケンス番号を前方移動します。 このメソッドは継承できません。
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
が、このシーケンスの基本シーケンス番号と最後のシーケンス番号との間にありません。
指定されたログにエクステントがありません。 レコード シーケンスを使用する前に、1 つ以上のエクステントを作成する必要があります。
シーケンスが破棄された後にメソッドが呼び出されました。
プログラムの実行を継続する十分なメモリがありません。
指定のログ シーケンスへのアクセスは、オペレーティング システムにより拒否されました。
レコード シーケンスがいっぱいです。
例
この例では、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
パラメーターで指定されたシーケンス番号に進めることにより行うことができます。 「例」のコード サンプルに 2 つ目の方法が示されています。
このメソッドの呼び出しは、再開レコードがログに書き込まれないという点を除けば、WriteRestartArea を使用して新しい基本シーケンス番号を設定した場合と同じです。
適用対象
.NET