Share via


LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Metode

Definisi

Memindahkan nomor urutan dasar log ke depan. Metode ini tidak dapat diwariskan.

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)

Parameter

newBaseSequenceNumber
SequenceNumber

Menentukan basis SequenceNumber baru untuk log. Ini harus terletak dalam rentang antara nomor urutan dasar saat ini dan nomor urutan terakhir dari log secara inklusif.

Penerapan

Pengecualian

newBaseSequenceNumber tidak valid untuk urutan ini.

Ekor arsip baru atau yang sudah ada atau dasar log aktif tidak valid.

-atau-

newBaseSequenceNumber bukan antara nomor urutan dasar dan urutan terakhir dari urutan ini.

Permintaan tidak dapat dilakukan karena pengecualian I/O yang tidak terduga.

-atau-

Permintaan tidak dapat dilakukan karena kesalahan perangkat I/O.

Log yang ditentukan tidak memiliki jangkauan apa pun. Satu atau beberapa jangkauan harus dibuat sebelum urutan rekaman dapat digunakan.

Metode ini dipanggil setelah urutan dibuang.

Memori tidak cukup untuk melanjutkan eksekusi program.

Akses untuk urutan log yang ditentukan ditolak oleh sistem operasi.

Urutan rekaman penuh.

Contoh

Contoh ini menunjukkan cara menggunakan AdvanceBaseSequenceNumber metode dengan TailPinned peristiwa untuk mengosongkan ruang dalam urutan log.

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);  

}  

Keterangan

Metode ini sering digunakan dengan TailPinned peristiwa untuk mengosongkan ruang dalam rekaman. Peristiwa menunjukkan TailPinned bahwa ekor urutan (yaitu, nomor urutan dasar) perlu dipindahkan ke depan untuk mengosongkan ruang. Mengosongkan ruang dapat dilakukan dengan menulis area hidupkan ulang menggunakan WriteRestartArea metode , atau memotong log dan menggunakan AdvanceBaseSequenceNumber metode untuk memajukan nomor urutan dasar log ke yang ditentukan oleh newBaseSequenceNumber parameter . Sampel kode di bagian Contoh menunjukkan pendekatan kedua.

Perhatikan bahwa memanggil metode ini sama dengan mengatur nomor urutan dasar baru menggunakan WriteRestartArea metode , kecuali bahwa tidak ada catatan hidupkan ulang yang ditulis ke log.

Berlaku untuk