LogRecordSequence.ReserveAndAppend メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
単一の予約を自動的に行って、シーケンスにレコードを追加します。
オーバーロード
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
単一の予約を自動的に行って、シーケンスにレコードを追加します。 このメソッドは継承できません。 |
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
単一の予約を自動的に行って、シーケンスにレコードを追加します。 このメソッドは継承できません。 |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
単一の予約を自動的に行って、シーケンスにレコードを追加します。 このメソッドは継承できません。
public:
virtual System::IO::Log::SequenceNumber ReserveAndAppend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ data, System::IO::Log::SequenceNumber userRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservationCollection, ... cli::array <long> ^ reservations);
public System.IO.Log.SequenceNumber ReserveAndAppend (System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber userRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, params long[] reservations);
abstract member ReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
override this.ReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
Public Function ReserveAndAppend (data As IList(Of ArraySegment(Of Byte)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber
パラメーター
- data
- IList<ArraySegment<Byte>>
レコードとして連結および追加されるバイト配列セグメントのリスト。
- userRecord
- SequenceNumber
ユーザー指定の順序で次のレコードのシーケンス番号。
- previousRecord
- SequenceNumber
以前の順序で次のレコードのシーケンス番号。
- recordAppendOptions
- RecordAppendOptions
データの書き込み方法を指定する RecordAppendOptions の有効な値。
- reservationCollection
- ReservationCollection
予約を作成する予約コレクション。
- reservations
- Int64[]
作成する予約のバイト数。
戻り値
追加されたログ レコードのシーケンス番号。
実装
例外
1 つ以上の引数が無効です。
レコードの追加時に I/O エラーが発生しました。
レコード シーケンスは、新しいレコードの格納または予約のための十分な空き領域を作成できませんでした。
シーケンスが破棄された後にメソッドが呼び出されました。
1 つ以上の引数が null
です。
userRecord
または previousRecord
が、このシーケンスの基本シーケンス番号と最後のシーケンス番号との間にありません。
レコード シーケンスが読み取り専用アクセスで開かれているため、操作を実行できません。
プログラムの実行を継続する十分なメモリがありません。
指定のログ シーケンスへのアクセスは、オペレーティング システムにより拒否されました。
data
に対応する十分なサイズの予約が reservations
に見つかりません。
注釈
data
パラメーターに格納されたデータは、レコードとして追加するために単一バイトの配列に連結されます。 ただし、レコードの読み取り時にデータを分割して配列セグメントに戻す準備は実施されません。
指定の予約情報は、レコード追加操作を含む分割不可能な操作内で、提供された予約コレクションに追加されます。 追加が失敗した場合、領域は予約されません。
このメソッドは通常、レコードの書き込みが終わる前に完了できます。 レコードが書き込まれたことを確認するために、ForceFlush パラメーターを使用して recordAppendOptions
フラグを指定するか、Flush メソッドを呼び出します。
適用対象
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
単一の予約を自動的に行って、シーケンスにレコードを追加します。 このメソッドは継承できません。
public:
virtual System::IO::Log::SequenceNumber ReserveAndAppend(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservationCollection, ... cli::array <long> ^ reservations);
public System.IO.Log.SequenceNumber ReserveAndAppend (ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, params long[] reservations);
abstract member ReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
override this.ReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
Public Function ReserveAndAppend (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber
パラメーター
- data
- ArraySegment<Byte>
レコードとして連結および追加されるバイト配列セグメントのリスト。
- nextUndoRecord
- SequenceNumber
ユーザー指定の順序で次のレコードのシーケンス番号。
- previousRecord
- SequenceNumber
以前の順序で次のレコードのシーケンス番号。
- recordAppendOptions
- RecordAppendOptions
データの書き込み方法を指定する RecordAppendOptions の有効な値。
- reservationCollection
- ReservationCollection
予約を作成するコレクションを格納する ReservationCollection。
- reservations
- Int64[]
作成する予約のバイト数。
戻り値
追加されたログ レコードのシーケンス番号。
実装
例外
このシーケンスの nextUndoRecord
または previousRecord
が有効ではありません。
- または -
data
が最大レコード サイズより大きいため、追加できません。
- または -
reservations
が、このレコード シーケンスによって作成されていません。
1 つ以上の引数が null
です。
nextUndoRecord
または previousRecord
が、このシーケンスの基本シーケンス番号と最後のシーケンス番号との間にありません。
レコード シーケンスが読み取り専用アクセスで開かれているため、操作を実行できません。
シーケンスが破棄された後にメソッドが呼び出されました。
プログラムの実行を継続する十分なメモリがありません。
レコード シーケンスがいっぱいです。
指定のログ シーケンスへのアクセスは、オペレーティング システムにより拒否されました。
data
に対応する十分なサイズの予約が reservations
に見つかりません。
例
このメソッドを使用して予約を作成する方法を次の例に示します。 このタスクは、CLFS ベースの LogRecordSequence クラスを使用している場合のみ実行できることに注意してください。
ReservationCollection reservations = recordSequence.CreateReservationCollection();
long[] lengthOfUndoRecords = new long[] { 1000 };
recordSequence.ReserveAndAppend(recordData,
userSqn,
previousSqn,
RecordSequenceAppendOptions.None,
reservations,
lengthOfUndoRecords);
recordSequence.Append(undoRecordData, // If necessary …
userSqn,
previousSqn,
RecordSequenceAppendOptions.ForceFlush,
reservations);
注釈
data
パラメーターに格納されたデータは、レコードとして追加するために単一バイトの配列に連結されます。 ただし、レコードの読み取り時にデータを分割して配列セグメントに戻す準備は実施されません。
指定の予約情報は、レコード追加操作を含む分割不可能な操作内で、提供された予約コレクションに追加されます。 追加が失敗した場合、領域は予約されません。
このメソッドは通常、レコードの書き込みが終わる前に完了できます。 レコードが書き込まれたことを確認するために、ForceFlush パラメーターを使用して recordAppendOptions
フラグを指定するか、Flush メソッドを呼び出します。
適用対象
.NET