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 사용하여 새 기본 시퀀스 번호를 설정하는 것과 동일합니다.

적용 대상