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 メソッドを使用して新しい基本シーケンス番号を設定する場合と同じであることに注意してください。