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 デバイス エラーのため、要求は実行されませんでした。

指定されたログにエクステントがありません。 レコード シーケンスを使用する前に、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 を使用して新しい基本シーケンス番号を設定した場合と同じです。

適用対象